大数据量.Net使用OpenXml导出Excel

发布于:2023-04-27 ⋅ 阅读:(298) ⋅ 点赞:(0)

1、使用NuGet包管理器安装

DocumentFormat.OpenXml

2.调用导出方法

    /// <summary>
    /// 导出Excel
    /// </summary>
    /// <param name="fileName">保存文件路径</param>
    /// <param name="exportTable">数据源</param>
    private static void ExportExcelFile(string fileName, DataTable exportTable)
    {
        using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook))
        {
            WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
            workbookPart.Workbook = new Workbook();

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

            Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
            Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = exportTable.TableName };

            sheets.Append(sheet);
            Row headerRow = new Row();

            List<String> columns = new List<string>();
            foreach (System.Data.DataColumn column in exportTable.Columns)
            {
                columns.Add(column.ColumnName);

                Cell cell = new Cell();
                cell.DataType = CellValues.String;
                cell.CellValue = new CellValue(column.ColumnName);
                headerRow.AppendChild(cell);
            }

            sheetData.AppendChild(headerRow);

            foreach (DataRow dsrow in exportTable.Rows)
            {
                Row newRow = new Row();
                foreach (String col in columns)
                {
                    Cell cell = new Cell();
                    cell.DataType = CellValues.String;
                    cell.CellValue = new CellValue(dsrow[col].ToString());
                    newRow.AppendChild(cell);
                }
                sheetData.AppendChild(newRow);
            }
            workbookPart.Workbook.Save();
        }

网站公告

今日签到

点亮在社区的每一天
去签到