您的位置:首页 > 编程语言 > ASP

OpenXML: Asp.net利用OpenXML 导出Excel.

2009-06-12 11:04 344 查看
第一步要先装 Openxml SDK 2.0, 然后引用DocumentFormat.Openxml.dll。

引用名称空间

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Linq;
Openxml 只能生成Office2007的文档,并且需要Linq。

关于Excel.xlsx:

office 2007的excel 实质是zip文件, 把扩展名改为.zip后,我们可以看到里面是一些xml 文件

Code
Response.Clear();
Response.ClearHeaders();
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.ContentType = "application/vnd.ms-excel.sheet.binary.macroEnabled.12";
Response.AddHeader("Content-Disposition", "attachment; filename=DataView.xlsx");

ms.Position = 0;
byte[] buffer = new byte[4096];
int i = 0;
long length = 0;
while (length < ms.Length)
{
i = ms.Read(buffer, 0, 4096);
Response.OutputStream.Write(buffer, 0, i);
length += i;
};
ms.Dispose();
Response.Flush();
Response.End();
这里有一点要注意, 我原先用下面的方法:

byte[] buffer = ms.GetBuffer();

Response.OutputStream.Write(buffer, 0, buffer.Length);

这样是有问题的, 因为memorystring有两个长度, 一个是字节长度,另一个是占用空间长度, 因此用GetBuffer生成byte[] 是memory占用的空间的长度, 而不是内容的实际长度, 这样导致response出的文件, 不能正常打开。



我封装了一下Openxml,供大家下载共同学习/Files/skyfei/OpenXMLExcel.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: