使用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文件后可以发现

除了几个个附带的文件夹,有一个xml文件。
打开xml文件之后可以看到

一个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 |
具体可以参考
添加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();


浙公网安备 33010602011771号