C#使用OpenXML SDK操作Excel详解
"这篇资料主要介绍了如何在C#中使用OpenXML SDK 2.0来操作Excel文件,包括创建和读取工作簿、工作表以及共享字符串表等关键步骤。" OpenXML SDK 2.0 是一个用于创建、访问和修改Microsoft Office文件格式的库,特别适用于处理基于Open XML标准的文档,如Excel、Word和PowerPoint。在C#中,我们可以利用这个库来编程性地操作Excel电子表格,而无需依赖Microsoft Excel应用程序本身。 1. 引入必要的命名空间: 在C#代码中,我们需要引入以下命名空间以便使用OpenXML SDK提供的类和方法: ```csharp using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Spreadsheet; using System.Linq; ``` 2. 创建新的Excel文档: 要创建一个新的Excel文档,首先需要实例化`SpreadsheetDocument`对象,这可以通过调用`SpreadsheetDocument.Create`方法实现。例如: ```csharp Stream stream = new MemoryStream(); SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook); ``` 接着,我们需要添加一个`WorkbookPart`来存储工作簿的元数据: ```csharp WorkbookPart workbookPart = spreadSheet.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); ``` 3. 添加工作表: 每个工作簿可以包含多个工作表。要添加一个新的工作表,可以这样做: ```csharp WorksheetPart excelSheet = workbookPart.Workbook.AppendChild(new Worksheet()); ``` 然后,为工作表添加一个名称: ```csharp Sheet sheet = new Sheet() { Id = spreadSheet.WorkbookPart.GetIdOfPart(excelSheet), SheetId = 1, Name = "Sheet1" }; workbookPart.Workbook.AppendChild<Sheets>(new Sheets()).AppendChild<Sheet>(sheet); ``` 4. 共享字符串表(SharedStringTable): 为了优化性能,OpenXML使用共享字符串表来存储单元格中的文本,这样多个单元格引用相同的文本时,只需要存储一次。创建共享字符串表: ```csharp SharedStringTablePart shareStringPart = workbookPart.AddNewPart<SharedStringTablePart>(); shareStringPart.SharedStringTable = new SharedStringTable(); shareStringPart.SharedStringTable.Count = 1; shareStringPart.SharedStringTable.UniqueCount = 1; ``` 添加新的字符串项: ```csharp int index = InsertSharedStringItem("文本内容", shareStringPart); ``` 5. 插入单元格(Cells): 插入单元格时,我们需要找到合适的位置并创建一个`Cell`对象,然后将其添加到`Row`对象中,最后将`Row`添加到`Worksheet`中。例如,插入一个包含共享字符串表中索引的单元格: ```csharp Row newRow = new Row(); Cell cell = new Cell() { DataType = CellValues.SharedString, CellReference = "A1" }; cell.Append(new SharedStringReference() { Index = index }); newRow.Append(cell); excelSheet.AppendChild<SheetData>(new SheetData()).AppendChild(newRow); ``` 通过以上步骤,我们可以在C#中使用OpenXML SDK创建并填充一个基本的Excel文档。这个库提供了丰富的API,可以实现更复杂的功能,如样式设置、公式计算、图表创建等。在实际应用中,可以根据需求进一步学习和探索OpenXML SDK的更多功能。
引用名称空间
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Linq;
Openxml Excel 结构:
1.创建SpreadsheetDocument, 这个相当于excel文件级, SpreadsheetDocument.Create;
2. 创建WorkbookPart,在代码中主要使用这个相当于xml的root elements, spreadSheet.AddWorkbookPart(), 虽然是"Add"方法, 但你只能加一个。
3. 初始workbookpart
spreadSheet = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);
WorkbookPart workbookPart = spreadSheet.AddWorkbookPart();
workbookPart.Workbook = new Workbook()
4. 创建WorksheetPart, 这个就是excel sheets的管理类了, 这个可以参加sdk的how to 里的方法
5. 创建SharedStringTablePart, 这个管理excel的内容, 不管你的数据是在那个excel worksheet里, cell里的值都是存在sharestringtable里的, 然后通过relationshipID进行关联。这里有有一点需要注意, sdk里没有提及。如果要创建多个worksheet, 那么一定要设置SharedStringTable 的Count 和UniqueCount 值。 否则创建多个worksheet, 生成的excel 在打开时会报错。
shareStringPart.SharedStringTable = new SharedStringTable();
shareStringPart.SharedStringTable.Count = 1;
shareStringPart.SharedStringTable.UniqueCount = 1;
6. 写入cell值:
先把值写入sharestringtable,参加sdk里InsertSharedStringItem方法, 返回值对应的id。
然后利用sdk 提供的示例方法InsertCellInWorksheet, 创建一个新cell
最后把值和cell 做关联
int index = InsertSharedStringItem(text, shareStringPart);
Cell cell = InsertCellInWorksheet(name, Convert.ToUInt32(i + startx), worksheetPart);
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全