C#使用Spire.XLS for .NET实现将网页数据一键导出为Excel

 更新时间:2026年03月16日 11:04:48   作者:缺点内向  
在Web开发和数据处理中,C# HTML to Excel转换需求频现,本文分享基于Spire.XLS for .NET的实用方案,支持HTML5表格解析,保留复杂样式,希望对大家有所帮助

在Web开发和数据处理中,C# HTML to Excel转换需求频现。网页表格数据手动复制到Excel常导致样式丢失、格式混乱,费时费力。随着Web爬取数据自动化趋势,高效实现HTML 到 XLS/XLSX的转换成为刚需。本文分享基于Spire.XLS for .NET的实用方案,支持HTML5表格解析,保留复杂样式。

需求背景与痛点分析

Web应用或爬虫常输出HTML表格,但直接导入Excel易遇兼容性问题。传统方法如手动复制或浏览器导出,效率低且样式丢失严重。新趋势下,C#程序化处理Web数据(如报表、统计表)需求激增。痛点包括:复杂嵌套表格解析难、CSS样式不保留、大文件性能瓶颈。

推荐方案: Spire.XLS for .NET

Spire.XLS for .NET 是高效Excel操作库,其社区版免费,支持C# HTML to Excel的直接转换。优势在于解析HTML5复杂结构,保留表格样式、颜色、边框等。

库名称HTML支持度样式保留.NET 8兼容免费版限制
Spire.XLS高(HTML5)优秀社区版5页
NPOI一般完全免费
ClosedXML无直接支持优秀完全免费

Spire.XLS胜在开箱即用,无需额外HTML解析库如HtmlAgilityPack。

实战步骤与代码示例

实现HTML 到 XLS/XLSX的转换仅需3步:

  • NuGet安装Install-Package Spire.XLS -Version 13.4.3(最新版支持.NET 8)。
  • 加载HTML并转换:使用LoadFromHtml方法。
  • 保存Excel:输出XLSX格式。
using Spire.Xls;

class Program
{
    static void Main()
    {
        // 创建工作簿
        Workbook workbook = new Workbook();
        
        // 加载HTML文件(支持文件路径或HTML字符串)
        string htmlFilePath = "input.html";
        workbook.LoadFromHtml(htmlFilePath);
        
        // 保存为Excel文件(XLSX格式)
        string outputFilePath = "output.xlsx";
        workbook.SaveToFile(outputFilePath, ExcelVersion.Version2013);
        
        workbook.Dispose();
    }
}

输入HTML示例(复杂表格):

<table border="1">
    <tr><th>产品</th><th>销量</th></tr>
    <tr><td>手机</td><td style="color:red;">1000</td></tr>
</table>

输出Excel效果:表格样式、颜色完整保留。

常见问题与优化

  • 大文件处理:社区版限5页,商用升级专业版。优化:预解析HTML分批加载。
  • HTML字符串输入:用workbook.LoadFromHtml(htmlString)直接转换。
  • 异常处理:包裹try-catch,检查HTML语法。
  • 性能提示:NET 8下多线程安全,适合批量Web数据导出。

知识扩展

下面小编就和大家简单讲讲C#将HTML转Excel的其他方法

1.C# HTML转EXCEL

private void ToExcel(string html)
        {
            Response.ContentType = "application/force-download";
            Response.AddHeader("content-disposition",
                "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
            Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
            Response.Write("<head>");
            Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
            string fileCss = Server.MapPath("~/UI/themes/DRP.UI.Ext.css");
            string cssText = string.Empty;
            StreamReader sr = new StreamReader(fileCss);
            var line = string.Empty;
            while ((line = sr.ReadLine()) != null)
            {
                cssText += line;
            }
            sr.Close();
            Response.Write("<style>" + cssText + "</style>");
            Response.Write("<!--[if gte mso 9]><xml>");
            Response.Write("<x:ExcelWorkbook>");
            Response.Write("<x:ExcelWorksheets>");
            Response.Write("<x:ExcelWorksheet>");
            Response.Write("<x:Name>Report Data</x:Name>");
            Response.Write("<x:WorksheetOptions>");
            Response.Write("<x:Print>");
            Response.Write("<x:ValidPrinterInfo/>");
            Response.Write("</x:Print>");
            Response.Write("</x:WorksheetOptions>");
            Response.Write("</x:ExcelWorksheet>");
            Response.Write("</x:ExcelWorksheets>");
            Response.Write("</x:ExcelWorkbook>");
            Response.Write("</xml>");
            Response.Write("<![endif]--> ");
            Response.Write(html);//HTML
            Response.Flush();
            Response.End();
        }

2.C#/VB.NET:将 HTML 转换为 Excel

using Spire.Xls;
namespace ConvertHtmlToExcel
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 确定输入HTML文件地址
            string filePath = @"C:\Users\Administrator\Desktop\Sample.html";
            // 创建一个 Workbook 实例
            Workbook workbook = new Workbook();
            // 加载 HTML 文件
            workbook.LoadFromHtml(filePath);
            // 将HTML文件保存为Excel文件格式
            string result = @"C:\Users\Administrator\Desktop\ToExcel.xlsx";
            workbook.SaveToFile(result, ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

3.c# 把excel转换html

private DataTable GetTableFromExcel()
{
DataTable dt = new DataTable();
try
{
if (exclFileUpload.HasFile)
{
string FileName = Path.GetFileName(exclFileUpload.PostedFile.FileName);
string Extension = Path.GetExtension(exclFileUpload.PostedFile.FileName);
string FolderPath = Server.MapPath(ConfigurationManager.AppSettings["FolderPath"]);
//string NewFileName = string.Format("{0}_{1}",DateTime.Now.ToString().Replace("/","").Replace(" ","").Replace(":",""),FileName);
string FilePath = Path.Combine(string.Format("{0}/{1}",FolderPath,FileName));
exclFileUpload.SaveAs(FilePath);
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conStr = String.Format(conStr,FilePath,true);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
connExcel.Close();
File.Delete(FilePath);
}
}
catch (Exception ex)
{
}
return dt;
}

总结

将HTML内容转换为Excel是数据处理中的常见需求。Spire.XLS for .NET 提供简洁的API,支持将HTML表格及其样式直接转换为XLS/XLSX格式。开发者无需手动解析网页数据,几行代码即可完成批量转换,适用于数据采集、报表生成等场景,且不依赖Microsoft Office环境。试试这个免费社区版,高效解决样式丢失痛点。

到此这篇关于C#使用Spire.XLS for .NET实现将网页数据一键导出为Excel的文章就介绍到这了,更多相关C#网页数据导出为Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#使用三层架构开发Winform的详细案例

    C#使用三层架构开发Winform的详细案例

    这篇文章介绍了C#使用三层架构开发Winform的详细案例,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • RandomId生成随机字符串详解实例

    RandomId生成随机字符串详解实例

    本文主要介绍RandomId 生成随机字符串的方法,大家参考使用吧
    2013-12-12
  • C# 中依赖注入(DI)的实现方式

    C# 中依赖注入(DI)的实现方式

    在C#中依赖注入(DI)的实现方式主要分为手动注入和通过IoC容器注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • C# 设计模式系列教程-单例模式

    C# 设计模式系列教程-单例模式

    单例模式防止在应用程序中实例化多个对象。这就节约了开销,每个实例都要占用一定的内存,创建对象时需要时间和空间。
    2016-06-06
  • C#类的创建与初始化实例解析

    C#类的创建与初始化实例解析

    这篇文章主要介绍了C#类的创建与初始化实例解析,有助于初学者较为直观的理解C#的类,需要的朋友可以参考下
    2014-07-07
  • C#实现文件与二进制互转并存入数据库

    C#实现文件与二进制互转并存入数据库

    这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • unity实现简单贪吃蛇游戏

    unity实现简单贪吃蛇游戏

    这篇文章主要为大家详细介绍了unity实现简单贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#实现QQ邮箱发送邮件

    C#实现QQ邮箱发送邮件

    今天小编就为大家分享一篇关于C#实现QQ邮箱发送邮件,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • C#编程读取文档Doc、Docx及Pdf内容的方法

    C#编程读取文档Doc、Docx及Pdf内容的方法

    这篇文章主要介绍了C#编程读取文档Doc、Docx及Pdf内容的方法,涉及C#操作COM组件读取Doc、Docx及Pdf文档的相关技巧,需要的朋友可以参考下
    2015-05-05
  • unity3d实现七天签到功能

    unity3d实现七天签到功能

    这篇文章主要为大家详细介绍了unity3d实现七天签到功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04

最新评论