Office OpenXML-Excel(一)

简介: 原文 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技术来交换数据。

原文 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

目录
相关文章
VS2005(excel2007)利用Automation(OLD Automation)方法。将Excel当成组件服务器的编译错误 我的系统盘和office都装在d盘。 自动生成的import有问题
VS2005(excel2007)利用Automation(OLD Automation)方法。将Excel当成组件服务器的编译错误 我的系统盘和office都装在d盘。 自动生成的import有问题
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
5-22|pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Office Excel', 'Excel 无法打开文件“
5-22|pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Office Excel', 'Excel 无法打开文件“
|
4月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
290 0
|
7月前
|
Web App开发 JavaScript 前端开发
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
现在,随着数字化进程渗透到到各行各业,数据安全已经成为了数字化革命中的重要组成部分,而在线Office成在OA、ERP、文档系统中得到了广泛的应用,为我国的信息化事业也做出了巨大贡献。随着操作系统、浏览器及Office软件的不断升级和更新换代,加上国家对信息化、数字化系统要求的不断提升,一些厂家的WebOffice控件产品不断被淘汰出局,而现存的几个产品也存在以下几个问题:
733 9
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
|
数据可视化 数据安全/隐私保护 Android开发
Excel 常用的九十九个技巧 Office 自学教程快速掌握办公技巧
Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测,并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能,它已成为国内外广大用户管理公司和个人财务、统计数据、绘制各种专业化表格的得力助手。允许用户自定义界面的电子制表软件包括字体、文字属性和单元格格式,它还引进了智能重算的功能,当单元格数据变动时,只有与之相关的数据才会更新,荒岛本次带来九十九个 Excel 技巧,提高您的办公效率。
579 0
【Office】【Excel】将多个工作表合为一个工作表
【Office】【Excel】将多个工作表合为一个工作表
138 0
【Office】【Excel】将多个工作表合为一个工作表
|
7月前
|
前端开发 JavaScript Java
大咖与小白的日常:如何在线编辑Word/PPT/Excel等Office文件
如何利用OSS和智能媒体管理服务,实现在线预览/编辑Office文件。
153 0
|
BI
Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF
1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New ApplicationClass();    Microsoft.
2233 0