原文 http://www.cnblogs.com/changminglong/articles/2840004.html

适用于

2007 Microsoft Office 套件,Microsoft Office Excel 2007,Microsoft Office PowerPoint 2007,Microsoft Office Word 2007

OpenXML优势

用户可以在Office应用程序和企业系统之间使用XML和ZIP技术来交换数据。文档是全局可以访问的。并且,您还可以减少文件损坏的风险。

Office XML 格式的结构

基于简单的分部分的压缩的ZIP文件格式。在新的Office Open XML格式的核心使用一些XML的引用架构和一个ZIP容器。每个文件都是由一些部件的集合组成的;这个集合定义了文档。

文档部件是存储在容器文件当中,或者存储在基于工业标准的ZIP格式的包中。许多部件都是用来描述应用程序数据,元数据,以及自定义数据的XML数据,它们都是存储在容器文件当中的。

新建一个Excel文件把后缀名该为为ZIP格式,然后解压我们会看到如下结构;

_rels 目录

这个目录中包含一个.rels文件,它定义了包中的根关系。它是在解析整个包时首先要浏览的第一个文件;.rels 文件包含了基于起始部件(虚拟的起始部件)的关系.

使用OpenXML 导出Excel

首先在http://www.microsoft.com/en-us/download/details.aspx?id=5124 下载OpenXMLSDKv2和OpenXMLSDKTool;

然后在建立一个Excel表格用OpenXMLSDKTool 打开,如下图所示

建立一个新项目,建立一个新类把左侧的代码拷贝到这个新类中;然后我们把想放入Excel中的数据传递到这个类中。

在这个新类中定义一个新的静态方法用来生成表的行代码如下:

 private static void GenerateTableRow(SheetData sheetData1, Persion person, uint row){Row row2 = new Row() { RowIndex = (UInt32Value)row, Spans = new ListValue<StringValue>() { InnerText = "1:4" } };Cell cell5 = new Cell() { CellReference = "A" + row, StyleIndex = (UInt32Value)1U, DataType = CellValues.String, CellValue = new CellValue(person.Name) };Cell cell6 = new Cell() { CellReference = "B" + row, StyleIndex = (UInt32Value)1U, DataType = CellValues.Number, CellValue = new CellValue(person.Age.ToString()) };Cell cell7 = new Cell() { CellReference = "C" + row, StyleIndex = (UInt32Value)1U, DataType = CellValues.String, CellValue = new CellValue(person.Address) };Cell cell8 = new Cell() { CellReference = "D" + row, StyleIndex = (UInt32Value)1U, DataType = CellValues.String, CellValue = new CellValue(person.Company) };row2.Append(cell5);row2.Append(cell6);row2.Append(cell7);row2.Append(cell8);sheetData1.Append(row2);}private static void GenerateTableHeader(SheetData sheetData1){Row row1 = new Row() { RowIndex = (UInt32Value)1U, Spans = new ListValue<StringValue>() { InnerText = "1:4" } };Cell cell1 = new Cell() { CellReference = "A1", StyleIndex = (UInt32Value)2U, DataType = CellValues.SharedString };CellValue cellValue1 = new CellValue();cellValue1.Text = "0";cell1.Append(cellValue1);Cell cell2 = new Cell() { CellReference = "B1", StyleIndex = (UInt32Value)2U, DataType = CellValues.SharedString };CellValue cellValue2 = new CellValue();cellValue2.Text = "1";cell2.Append(cellValue2);Cell cell3 = new Cell() { CellReference = "C1", StyleIndex = (UInt32Value)2U, DataType = CellValues.SharedString };CellValue cellValue3 = new CellValue();cellValue3.Text = "2";cell3.Append(cellValue3);Cell cell4 = new Cell() { CellReference = "D1", StyleIndex = (UInt32Value)2U, DataType = CellValues.SharedString };CellValue cellValue4 = new CellValue();cellValue4.Text = "3";cell4.Append(cellValue4);row1.Append(cell1);row1.Append(cell2);row1.Append(cell3);row1.Append(cell4);sheetData1.Append(row1);}

然后在主函数中通过调用这个新类把数据传过去就能生成Excel。

具体代码请下载参考:http://files.cnblogs.com/changminglong/OfficeOpenXMLTest.rar

Office OpenXML-Excel(一)相关推荐

  1. microsoft query sql引用单元格_Microsoft.Office.Interop.Excel操作Excel拾遗

    背景: 最近用C#写了一个小工具需要操作Excel,网上搜到的方案都是COM组件方式,即Microsoft.Office.Interop.Excel居多,除此之外,还有以下几种方法: Microsof ...

  2. Office(Excel、Word)二次开发——VSTO

    Office(Excel.Word)二次开发--VSTO Office(Excel.Word)二次开发--VSTO Office二次开发模式: 1) VBA(visual studio for app ...

  3. 使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题

    操作背景:asp.net操作Excel 出现问题:在本地添加引用(com):Microsoft Office 11.0 Object Library,并写好程序调试正常,部署到服务器时,出现异常 Ex ...

  4. 使用Microsoft.Office.Interop.Excel时,64位问题

    前不久,碰到一个问题. 曾经用的好好的Microsoft.Office.Interop.Excel实现的导出Excel,迁移至64位server后,就出现: 检索 COM 类工厂中 CLSID 为 { ...

  5. C#利用Microsoft.Office.Interop.Excel导出数据到Excel

    添加引用(VS2013位于C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\ ...

  6. Web方式预览Office/Word/Excel/pdf文件解决方案

    Web方式预览Office/Word/Excel/pdf文件解决方案 参考文章: (1)Web方式预览Office/Word/Excel/pdf文件解决方案 (2)https://www.cnblog ...

  7. OFFICE、EXCEL、WORD、PPT操作技巧个人笔记本(持续更新)

    目录 说明 OFFICE 1.1.(6月17日更新)目的:修改文件作者名称. EXCEL 2.1.(6月28日更新)问题:因存在空格vlookup函数报错的处理. WORD 3.1.(6月17日更新) ...

  8. c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件

    1.引用Microsoft.Office.Interop.Excel.dll 2.引用命名空间.使用别名 using System.Reflection; using Excel = Microsof ...

  9. Microsoft.Office.Interop.Excel.dll下载

    下载Microsoft.Office.Interop.Excel.dll http://files.cnblogs.com/fan0136/Microsoft.Office.Interop.Excel ...

  10. 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用

    引用:http://www.cnblogs.com/lanjun/archive/2012/06/17/2552920.html 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中就涉及到E ...

最新文章

  1. 商店购物java程序_java操纵数据库-商店购物管理系统
  2. 媒体查询media的3种引入方式
  3. Linux系统初级优化
  4. python 读中文乱码_python字符乱码的解决小结
  5. linux命令-tar命令
  6. (4)Linux进程调度-组调度及带宽控制
  7. 在开启kerberos 后,hbase存在数据命名空间的问题(解决方案)
  8. Leetcode 刷题笔记(二十八) ——动态规划篇之子序列问题:连续子序列和不连续子序列
  9. HA模式下的java api访问要点
  10. live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)
  11. Tableau Desktop 2021中文免费版下载(包含其它历史版本)
  12. 鸿蒙系统下载 绿色,WiseFolderHider(文件夹加密软件)4.3.7
  13. 系统地学习3D建模!教你零基础入门
  14. xcode6.3设备无法运行Ineligible Devices的解决方法
  15. 谷歌变坏了?Chrome 已成众矢之的:15 篇前端热文回看
  16. Sublime Text的使用代码块安装的模块
  17. STM32F103C8T6定时器
  18. 蜂房问题-蜜蜂在蜂房中只能向下或者右上方爬,从a位置爬到b位置有多少种途径
  19. 半角和全角的区别 java_全角和半角区别
  20. sever and mirroring(服务器和镜像)是什么

热门文章

  1. 用 Git 和 Github 提高效率的 10 个技巧!
  2. 斯坦福的人工智能4年路线!
  3. 【廖雪峰python入门笔记】tuple_创建单元素
  4. 【干货】NLP中对困惑度感到困惑?
  5. 这个GitHub 1400星的Git魔法书火了,斯坦福校友出品丨有中文版
  6. Facebook工程师教你什么是随机森林,就算零基础也可以看懂 | 干货
  7. Softmax和Cross-entropy是什么关系?
  8. 戴着口罩如何进行人脸识别?快进来看看吧!
  9. Numpy中数组间运算
  10. https://www.exploit-db.com/下载POC比较完善的代码