C#读写EXCEL的几种方式

本文总结了三种C#实现Excel二次开发的方法:调用微软Office接口(需客户端安装Office),调用WPS Office接口(需安装WPS),以及使用NPOI接口(无特定客户端要求)。详细介绍了每种方式的步骤和示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现EXCEL二次开发,通过这几天的网上百度、谷歌以及自己的测试,现总结如下,希望对有心人士有所帮助,有不足支持还请各路大婶补充指正。

一  调用微软office接口

该方式要求,客户端必须安装微软office。

1、安装微软office

2、将Microsoft.Office.Interop.Excel.dll拷贝到项目框架,并引用。【该dll百度一下就可以下载的到】

3、小例子如下,仅供参考。

<p><span style="white-space: pre;">using Microsoft.Office.Interop.Excel;</span></p><p><span style="white-space: pre;">	</span>......</p>
public DataSet ImportExcel(string fileName)
        {
            QuertExcel();
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            if (xlApp == null)
            {
### C# 操作 Excel 的常见方式及其实现 #### 使用 Microsoft Office Interop Excel 导出和读取 Excel 文件 Microsoft Office Interop 是一种常见的用于操作 Excel 文件的方式。通过该库可以创建、修改以及读取 Excel 文档。 以下是使用 Microsoft Office Interop 创建并写入 Excel 文件的示例代码: ```csharp using System; using System.Data; using Excel = Microsoft.Office.Interop.Excel; public class ExcelInteropExample { public void ExportToExcel(DataTable dataTable) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1]; int row = 1; foreach (DataRow dataRow in dataTable.Rows) { worksheet.Cells[row, 1] = dataRow["Name"].ToString(); worksheet.Cells[row, 2] = dataRow["Age"]; row++; } workbook.SaveAs("example.xlsx"); workbook.Close(); excelApp.Quit(); } } ``` 对于读取 Excel 数据至 `DataTable`,可以通过以下代码实现: ```csharp using System; using System.Data; using Excel = Microsoft.Office.Interop.Excel; public class ExcelInteropReader { public DataTable ReadFromExcel(string filePath) { DataTable dt = new DataTable(); Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Open(filePath); Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; Excel.Range range = worksheet.UsedRange; for (int col = 1; col <= range.Columns.Count; col++) { dt.Columns.Add(range.Cells[1, col].Value?.ToString()); } for (int row = 2; row <= range.Rows.Count; row++) { DataRow dr = dt.NewRow(); for (int col = 1; col <= range.Columns.Count; col++) { dr[col - 1] = range.Cells[row, col].Value?.ToString(); } dt.Rows.Add(dr); } workbook.Close(false); excelApp.Quit(); return dt; } } ``` 上述方法依赖于本地安装的 Microsoft Office 软件环境[^2]。 --- #### 使用 EPPlus 或 ClosedXML 处理 Excel 文件 EPPlus 和 ClosedXML 是两个流行的第三方库,它们无需依赖 Microsoft Office 即可处理 Excel 文件。这些库支持 .NET 平台,并提供了更高效的文件操作能力。 ##### 使用 EPPlus 导出数据到 Excel 文件 下面是一个简单的例子展示如何利用 EPPlus 将数据表导出为 Excel 文件: ```csharp using OfficeOpenXml; using System.IO; using System.Data; public class EpplusExporter { public void ExportToExcel(DataTable dataTable, string outputPath) { FileInfo fileInfo = new FileInfo(outputPath); using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); // 添加列头 for (int i = 0; i < dataTable.Columns.Count; i++) { worksheet.Cells[1, i + 1].Value = dataTable.Columns[i].ColumnName; } // 添加数据行 for (int r = 0; r < dataTable.Rows.Count; r++) { for (int c = 0; c < dataTable.Columns.Count; c++) { worksheet.Cells[r + 2, c + 1].Value = dataTable.Rows[r][c]; } } package.Save(); } } } ``` ##### 使用 ClosedXML 读取 Excel 文件 ClosedXML 提供了一种简单的方式来加载和解析 Excel 文件的内容: ```csharp using ClosedXML.Excel; using System.Data; public class ClosedXMLReader { public DataTable ReadFromExcel(string filePath) { DataTable dt = new DataTable(); using (XLWorkbook workbook = new XLWorkbook(filePath)) { IXLWorksheet worksheet = workbook.Worksheet(1); bool firstRow = true; foreach (IXLRow row in worksheet.Rows()) { if (firstRow) { foreach (IXLCell cell in row.Cells()) { dt.Columns.Add(cell.Value.ToString()); } firstRow = false; } else { DataRow dr = dt.NewRow(); int columnIndex = 0; foreach (IXLCell cell in row.Cells()) { dr[columnIndex++] = cell.Value.ToString(); } dt.Rows.Add(dr); } } } return dt; } } ``` 这两种工具都基于 Open XML 标准,因此更适合现代开发场景下的高性能需求[^3]。 --- #### 总结 C# 可以通过多种方式进行 Excel 文件的操作,包括但不限于 Microsoft Office Interop、EPPlus 和 ClosedXML 等技术手段。每种方式都有其适用范围和技术特点,在实际项目中可以根据具体需求选择合适的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值