首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用c#中的Open Xml SDK将DataTable导出到Excel

使用C#中的Open XML SDK将DataTable导出到Excel是一种常见的数据导出方法。Open XML SDK是一个免费的开源库,可以用于创建、读取和编辑Microsoft Office格式的文档,如Word、Excel等。

以下是使用Open XML SDK将DataTable导出到Excel的步骤:

  1. 安装Open XML SDK:可以通过NuGet包管理器安装Open XML SDK。在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,然后搜索“DocumentFormat.OpenXml”并安装。
  2. 创建Excel文件:使用Open XML SDK创建一个Excel文件,并将DataTable导出到该文件中。以下是一个示例代码:
代码语言:csharp
复制
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Data;
using System.IO;

public static void ExportDataTableToExcel(DataTable dataTable, string filePath)
{
    using (var spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
    {
        var workbookPart = spreadsheetDocument.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();

        var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
        var sheetData = new SheetData();
        worksheetPart.Worksheet = new Worksheet(sheetData);

        var sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());

        var sheet = new Sheet()
        {
            Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
            SheetId = 1,
            Name = "Sheet1"
        };
        sheets.Append(sheet);

        var headerRow = new Row();
        foreach (DataColumn column in dataTable.Columns)
        {
            var cell = new Cell();
            cell.DataType = CellValues.String;
            cell.CellValue = new CellValue(column.ColumnName);
            headerRow.AppendChild(cell);
        }
        sheetData.AppendChild(headerRow);

        foreach (DataRow row in dataTable.Rows)
        {
            var dataRow = new Row();
            foreach (DataColumn column in dataTable.Columns)
            {
                var cell = new Cell();
                cell.DataType = CellValues.String;
                cell.CellValue = new CellValue(row[column].ToString());
                dataRow.AppendChild(cell);
            }
            sheetData.AppendChild(dataRow);
        }
    }
}
  1. 调用方法:可以在需要导出Excel的地方调用上面的方法,将DataTable和文件路径作为参数传递。例如:
代码语言:csharp
复制
var dataTable = new DataTable();
// 添加列和数据到DataTable
ExportDataTableToExcel(dataTable, "output.xlsx");

这样就可以将DataTable导出到Excel文件中了。需要注意的是,Open XML SDK可能不支持所有的Excel功能,因此在使用时需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Node.js 小打小闹之Excel解析

近期公司开始做绩效,某一天上午 HR 妹纸发了份 Excel 模板过来,让我下发给小组内成员填写。当天下午下班前,组内的绩效表就收齐了,接下来我就开始进入下一个环节,逐一打开每个 Excel 表为每个人打分。由于只有十几份绩效表,所以很快就打完分了。 不过问题来了,虽然已经打完分了,但我对小组内成员的每个考核项得分和总分的情况却还是一片空白。想要一目了然,当然得简单做个统计报表咯。那么如何收集每个人的数据呢?当然最简单的方式就一个个打开组内成员的绩效表,然后一个个统计,不过对于这种方式,我是拒绝的。作为一个小小的程序猿,还是得施展一下雕虫小技 —— “自动提取数据”。

02
领券