----Lixg 867314078@qq.com
Ecma Office Open XML(“Open XML”)是针对字处理文档、演示文稿和电子表格的国际化开放标准。(话说中文资料好少)
想看到***.xlsx文档内部是怎么存储信息是很简单的,只需要将***.xlsx后缀名改为***.zip,然后用压缩软件解压缩就得到了一堆xml文件,而各公司就是利用openxml的标准解析,存储一个表格。所以想了解OpenXML需要先了解xml文件。
示例 li.xlsx解压结果(主目录,及xl子目录和 worksheets子目录)
----------------------------------------------------------------------------------------------------------------------------------------------------
下边介绍microsoft提供的SpreadsheetDocument类,操作excel文档(文末代码):
SpreadsheetDocument:
表格文档类
WorkbookPart:
对应workbook.xml文档建立的一个类,处理该文档与外部的关系。
Workbook:
对应workbook.xml中的workbook元素。存储一excel文档的各sheet表的索引信息。
Sheets:
对应workbook的sheets子元素,包含所有sheet表的索引信息。
Sheet:
对应sheets的sheet子元素,包含一个sheet表的名称,及索引信息。可以由r:id 获取与该sheet对应的WorksheetPart对象。
Workbook.xml 示例
WorksheetPart:
对应sheet*.xml文档建立的一个类,处理该文档与外部的关系。
Worksheet:
对应sheet*.xml中的worksheet元素。存储一个sheet表的所有数据。
SheetData:
对应Worksheet的sheeData子元素,包含sheet表的所有 row(行)及单元格数据。
Row:
对应sheetData的Row子元素,sheet表中一行。
Cell:
对应Row的c子元素,sheet表中的一个单元格,存储一个数据。
Sheet*.xml示例:
// 代码君来了//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
namespace COpenXML
{
class clsExcel
{
/***** All Open Items ******/
public Sheets m_Sheets; // Sheets : WorkBook 子项,各Sheet集合
public Workbook m_WorkBook; // WorkBook : WorkBook.xml的子项 存储*xlsx的相关信息
public WorkbookPart m_WorkBookPart; // WorkBookpart : WorkBook容器
public SharedStringTable m_ShareTable;
public Worksheet m_WorkSheet; // WorkSheet : sheet*.xml 的容器, 1对1的关系
public WorksheetPart m_WorkSheetPart; // WorkSheetPart : WorkSheet 的容器,从WorkBookPart获取
public SpreadsheetDocument m_Doc;
//===Summary===
//====================================
// Name : Lixg
// Date : 2013-11-