使用openXML创建Excel

SpreadsheetDocument Class

SpreadsheetDocument类在文档中的定义是

an OpenXmlPackage represents a Spreadsheet document.

意思就是基本的操作单元,对文档的操作都是基于这个类,一个SpreadsheetDocument代表一个可操作性文档。

创建一个Excel文件

string path = @"F:\my c sharp data\ExcelHandleWithNet\testExcel.xlsx";
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.
    Create(path, SpreadsheetDocumentType.Workbook);

Create方法第一个参数是文件的地址,第二个参数是创建的Excel文件类型。

枚举值
AddIn 4 Excel Add-In (*.xlam)
MacroEnabledTemplate 3 Excel Macro-Enabled Template (*.xltm).
MacroEnabledWorkbook 2 Excel Macro-Enabled Workbook (*.xlsm).
Template 1 Excel Template (*.xltx).
Workbook 0 Excel Workbook (*.xlsx).

xlsx文件结构

xlsx文件其实是一个xml文件压缩包,其中可以包含多个xml文件。随意解压一个xlsx文件后可以发现
image
除了几个个附带的文件夹,有一个xml文件。
打开xml文件之后可以看到
image
一个excel文件-->一个workbook-->多个sheet-->每个sheet一个sheetdata-->多个row-->多个cell

类名 作用
workbookpart 每一个xlsx文件只有一个workbookpart,它对应一个workbook,表示对workbook的一系列操作
workbook 只能有一个,储存xlsx文件基本属性,例如有多少个sheet,整个表格的格式等等
sheet 一个表可以有多个sheet(分表)

以上为对整个表的抽象描述,并不包含具体数据。具体的数据包含在sheetdata中,要操作它必须要声明一个worksheetpart类,根据sheet的ID在对应的worksheet中找到sheetdata来操作。

类名 作用
worksheetpart worksheet的操作类
worksheet 与sheet相对应,可以有多个
sheetdata 具体数据包含在sheetdata中,一个分表只有一个sheetdata

具体可以参考

https://zibuyu.life/3480.html

添加workbook和worksheet

//申请workbookpart
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
//在workbookpart中添加workbook
workbookpart.Workbook = new Workbook();

//申请worksheetpart
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
//在worksheetpart中添加workbook
worksheetPart.Worksheet = new Worksheet(new SheetData());

在worksheet中添加表格

//申请sheets
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
    AppendChild<Sheets>(new Sheets());

//向sheets中添加单个表格  
Sheet sheet = new Sheet()
{
    Id = spreadsheetDocument.WorkbookPart.
    GetIdOfPart(worksheetPart),
    SheetId = 1,
    Name = "mySheet"
};
sheets.Append(sheet);

最后别忘了spreadsheetDocument.Close();

image

posted @ 2021-12-02 15:40  none323  阅读(389)  评论(0)    收藏  举报