国产化Excel开发组件Spire.XLS教程:C# 写入 Excel ,轻松将数据导出到工作表
<p><img src="https://image.evget.com/attachment/keditor/image/20250928/094257_3.png"></p><p>Excel 作为最常用的数据管理与分析工具之一,被广泛应用于各类数据处理场景。在 C# 应用程序开发过程中,无论是生成业务报表、导出数据库查询结果,还是实现自动化办公流程,C# 写入 Excel 的功能都扮演着至关重要的角色。</p>
<p>借助<strong> </strong><strong>Spire.XLS for .NET</strong>这一强大的第三方库,开发者无需在运行环境中安装 Microsoft Excel,即可高效、灵活地实现 Excel 文件的创建、写入与导出操作。本文将系统讲解如何 <strong>使用 C# 写入 Excel 文件</strong> ,包括不同数据类型的插入方法、批量数据写入技巧、文件保存与导出,助力开发者提升数据处理与自动化能力。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for .NET试用下载,请联系E-iceblue Spire官方授权代理商慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p>
<h2>Spire.XLS for .NET 简介与安装</h2>
<h3>什么是 Spire.XLS for .NET</h3>
<p><strong>Spire.XLS for .NET </strong>是由 E-iceblue 开发的一款专业 Excel 库。它允许开发人员在 C# 中写入 Excel 文件,并执行包括创建、编辑、读取和导出 Excel 文档在内的多种操作,而无需安装 Microsoft Excel。</p>
<p>主要功能包括:</p>
<ul>
<li>通过编程写入和更新 Excel 文件</li>
<li>支持 Excel 格式(XLS、XLSX、CSV、ODS)</li>
<li>提供高级功能,如公式、图表、数据透视表和数据验证</li>
<li>将 Excel 导出为 PDF、HTML 和图片格式</li>
<li>在处理大型数据集时保持高性能,适用于桌面、服务器和 Web 应用程序</li>
</ul>
<h3>如何安装 Spire.XLS for .NET</h3>
<p><strong>方式一:通过 NuGet 安装(推荐)</strong></p>
<ol>
<li>打开 Visual Studio。</li>
<li>依次选择 工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包...</li>
<li>搜索 <strong>Spire.XLS</strong> 并安装。</li>
</ol>
<p>或直接使用包管理器控制台:</p>
<pre class="prettyprint highlighter-hljs"><code>PM> Install-Package Spire.XLS</code></pre>
<p><strong>方式二:手动安装</strong></p>
<ol>
<li><strong>联系慧都科技下载 Spire.XLS 安装包</strong>。</li>
<li>在项目中添加对 <strong>Spire.Xls.dll</strong>的引用。</li>
</ol>
<p>安装完成后,你就可以在 C# 中开始写入 Excel 了。</p>
<h2>如何在 C# 中创建 Excel 文件</h2>
<p>第一步是创建一个新的工作簿并添加工作表,示例如下:</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>using Spire.Xls;
namespace CreateNewExcel
{
class Program
{
static void Main(string[] args)
{
// 创建一个新的工作簿
Workbook workbook = new Workbook();
// 移除默认工作表
workbook.Worksheets.Clear();
// 添加一个工作表
Worksheet sheet = workbook.Worksheets.Add("报告");
// 保存空的 Excel 文件
workbook.SaveToFile("新建文档.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}</code></pre>
<p>此时,你已经成功创建了一个包含名为“报告”的工作表的空 Excel 文件。接下来我们将向其中写入数据。</p>
<h2>C# 向 Excel 单元格写入不同数据类型</h2>
<p><strong>Spire.XLS</strong> 允许你直接将多种数据类型写入 Excel 单元格。常见示例如下:</p>
<p><strong>写入文本</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A1"].Text = "你好 Excel!";</code></pre>
<p><strong>写入数字</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A2"].NumberValue = 123.45;</code></pre>
<p><strong>写入日期和时间</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A3"].DateTimeValue = DateTime.Now;
sheet.Range["A3"].NumberFormat = "yyyy-mm-dd hh:mm";</code></pre>
<p><strong>写入布尔值</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A4"].BooleanValue = true;</code></pre>
<p><strong>写入 TimeSpan</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A5"].TimeSpanValue = new TimeSpan(2, 30, 0);
sheet.Range["A5"].NumberFormat = ":mm:ss";</code></pre>
<p><strong>插入公式</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A6"].Formula = "=SUM(A2,100)";</code></pre>
<p><strong>插入 HTML 格式字符串</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>string htmlText = "<span style=\"font-family: Times New Roman; color: blue; font-size: 15pt;\">HTML <strong>格式文本</strong></span>";
sheet.Range["A7"].HtmlString = htmlText;</code></pre>
<p><strong>写入通用值</strong></p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A8"].Value = "一般数据";</code></pre>
<p><img src="https://image.evget.com/attachment/keditor/image/20250928/094751_1.png"></p>
<h2>C# 将批量数据写入 Excel 工作表</h2>
<p>处理大型数据集时,逐个单元格写入效率很低。<strong>Spire.XLS </strong>提供了直接插入数组和 DataTable 的方法,其他数据结构可以先转换为数组或 DataTable。</p>
<h3>写入数组到 Excel</h3>
<p>使用 <strong>Worksheet.InsertArray</strong>方法,可以将一维或二维数组写入指定区域:</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>string[,] data = {
{ "姓名", "年龄", "国家" },
{ "张三", "30", "中国" },
{ "李四", "28", "中国" },
{ "王五", "35", "加拿大" }
};
sheet.InsertArray(data, 1, 1);</code></pre>
<p>效果图:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250928/094853_3.png"></p>
<h3>写入 DataTable 到 Excel</h3>
<p>使用 <strong>InsertDataTable</strong>方法将 DataTable 数据导入到工作表:</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("产品", typeof(string));
dt.Columns.Add("价格", typeof(double));
dt.Rows.Add(1, "笔记本电脑", 8999);
dt.Rows.Add(2, "平板电脑", 5999);
dt.Rows.Add(3, "手机", 6999);
sheet.InsertDataTable(dt, true, 1, 1, true);</code></pre>
<p>效果图:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250928/094950_6.png"></p>
<h3>写入 List 到 Excel</h3>
<p>虽然 <strong>Spire.XLS</strong> 没有直接支持写入 List 的方法,但你可以先将 List 转换为 DataTable,再写入 Excel。</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>using Spire.Xls;
using System.Data;
namespace WriteListToExcel
{
class Program
{
static void Main(string[] args)
{
// 创建一个工作簿实例
Workbook workbook = new Workbook();
// 移除默认工作表
workbook.Worksheets.Clear();
// 添加一个工作表并命名
Worksheet worksheet = workbook.Worksheets.Add("成绩单");
// 创建一个学生数据列表
List<Student> students = new List<Student>
{
new Student("迈克尔", "约翰逊", 20, "计算机科学", 3.8),
new Student("莎拉", "威廉姆斯", 22, "数学", 3.6),
new Student("杰西卡", "布朗", 19, "物理", 3.9),
new Student("大卫", "史密斯", 21, "化学", 3.7),
new Student("艾米莉", "戴维斯", 23, "生物", 3.5)
};
// 将列表转换为数据表
DataTable dataTable = ConvertListToDataTable(students);
// 将数据表写入工作表
worksheet.InsertDataTable(dataTable, true, 1, 1, true);
// 设置列宽
worksheet.AllocatedRange.ColumnWidth = 12;
// 内容左对齐
worksheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Left;
// 保存为Excel文件
workbook.SaveToFile("学生成绩单.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.Dispose();
}
static DataTable ConvertListToDataTable(List<Student> students)
{
DataTable dataTable = new DataTable();
// 添加列
dataTable.Columns.Add("名字", typeof(string));
dataTable.Columns.Add("姓氏", typeof(string));
dataTable.Columns.Add("年龄", typeof(int));
dataTable.Columns.Add("专业", typeof(string));
dataTable.Columns.Add("绩点", typeof(double));
// 添加行
foreach (var student in students)
{
DataRow row = dataTable.NewRow();
row["名字"] = student.FirstName;
row["姓氏"] = student.LastName;
row["年龄"] = student.Age;
row["专业"] = student.Major;
row["绩点"] = student.GPA;
dataTable.Rows.Add(row);
}
return dataTable;
}
}
class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Major { get; set; }
public double GPA { get; set; }
public Student(string firstName, string lastName, int age, string major, double gpa)
{
FirstName = firstName;
LastName = lastName;
Age = age;
Major = major;
GPA = gpa;
}
}
}</code></pre>
<p>效果图:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250928/095053_2.png"></p>
<h2>保存和导出 Excel 文件</h2>
<p>写入数据后,你需要保存或导出 Excel 文件。<strong>Spire.XLS</strong> 支持多种格式(XLSX、CSV、PDF 等):</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>// 保存为 XLSX
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2016);
// 保存为 CSV
workbook.SaveToFile("Output.csv", ",", Encoding.UTF8);
// 导出为 PDF
workbook.SaveToFile("Output.pdf", FileFormat.PDF);</code></pre>
<p>在 Web 应用中,还可以将文件保存到 MemoryStream:</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>using (MemoryStream ms = new MemoryStream())
{
workbook.SaveToStream(ms, FileFormat.Version2016);
// 可写入到 ASP.NET Response
}</code></pre>
<h2>常见问题与解决方案</h2>
<ol>
<li>
<p><strong>日期/时间格式错误</strong></p>
<ul>
<li>问题:日期/时间显示为序列号。</li>
<li>解决办法:设置正确的单元格格式。</li>
</ul>
</li>
<li>
<p><strong>数据覆盖或错位</strong></p>
<ul>
<li>问题:数组或 DataTable 写入时覆盖现有数据。</li>
<li>解决办法:检查 InsertArray/InsertDataTable 的起始行列参数。</li>
</ul>
</li>
<li>
<p><strong>大数据集写入性能低</strong></p>
<ul>
<li>问题:数千行写入速度慢。</li>
<li>解决办法:使用批量写入方法,避免逐单元格写入。</li>
</ul>
</li>
<li>
<p><strong>公式未正确计算</strong></p>
<ul>
<li>问题:写入的公式未返回预期结果。</li>
<li>解决办法:检查公式语法,必要时调用 workbook.CalculateAllValue()。</li>
</ul>
</li>
</ol>
<h2>总结</h2>
<p>在 C# 中实现 Excel 写入功能既直观又高效。借助<strong> Spire.XLS for .NET</strong>,无论是写入单个数值、文本、日期,还是处理大规模结构化数据集,都能轻松胜任。该库不仅支持单元格样式、公式计算、条件格式等高级功能,还能精准控制输出效果,确保最终生成的 Excel 文件数据准确、外观专业。</p>
<p>通过数组或 DataTable 进行批量数据写入,可大幅提升数据输出效率,灵活应对不同体量的数据导出需求。若你正在寻找一种稳定、高效且无需依赖 Microsoft Excel 环境的文件生成方案,<strong>Spire.XLS for .NET </strong>无疑是一个理想的技术选择。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for .NET试用下载,请联系E-iceblue Spire官方授权代理商慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p>
<h2>常见问答(FAQs)</h2>
<h3>Q1. 我能用 Spire.XLS 写入已有的 Excel 文件吗?</h3>
<p>可以。使用 workbook.LoadFromFile("file.xlsx") 打开文件,然后修改并保存。</p>
<h3>Q2. Spire.XLS 是否需要安装 Microsoft Excel?</h3>
<p>不需要,它是一个独立库。</p>
<h3>Q3. Spire.XLS 能处理包含成千上万行的大文件吗?</h3>
<p>可以,它针对大数据集做了性能优化。</p>
<h3>Q4. 写入数据时如何设置单元格样式?</h3>
<p>你可以通过以下方式设置字体、颜色、边框和对齐方式:</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>sheet.Range["A1"].Style.Font.IsBold = true;
sheet.Range["A1"].Style.Color = Color.Yellow;
sheet.Range["A1"].Style.HorizontalAlignment = HorizontalAlignType.Left;</code></pre><br><br>
来源:https://www.cnblogs.com/software-Development/p/19116270
頁:
[1]