您的位置:首页 > 其它

使用owc的spreadsheet导出Excel文件时,格式丢失的解决方法

2009-05-06 09:58 716 查看
在一次项目开发过程中,需要将查询结果导出成Excel文件。经过斟酌之后选择了使用Office的组建owc来进行开发。

由于导出文件的格式比较复杂,因此我首先制作Excel模板文件,并另存成xml格式。然后创建OWC11.SpreadsheetClass的对象,将数据导出。

导出过程中遇到一点麻烦,原来设定好的Excel格式在导出之后消失了。为了解决此问题,我采用了以下的办法,仅供参考!

1.在加载模板文件之后,将“WorksheetOptions”节点的内容暂存;

Dim oExcelSheet As New OWC11.SpreadsheetClass
Dim strOptionNodeInnerXml As String = String.Empty  '暂存Option节点的xml数据
Dim xmlDoc As New XmlDocument
xmlDoc.Load(Server.MapPath("~/App_Data/ABS19200.xml"))  '装载模板文件
'***由于spreadsheet读取Excel Xml文件后,一些Excel格式Tag将不再支持,因为会被滤掉
'这样,输出的文件将丢失页面格式。为了避免此现象,暂存WorksheetOptions节点的Innerxml。
Dim xmlOptionNode As XmlNodeList = xmlDoc.GetElementsByTagName("WorksheetOptions")
If xmlOptionNode IsNot Nothing Then
strOptionNodeInnerXml = xmlOptionNode.Item(0).InnerXml
End If
strXml = xmlDoc.DocumentElement.OuterXml
oExcelSheet.XMLData = strXml


2.利用上面创建的oExcelSheet对象进行文件写入操作;

3.完成数据写入之后,文件生成之前,插入下列代码。

'将spreadsheet输出的xml数据载入xmldocument,并且将前面暂存的格式数据复原
xmlDoc.LoadXml(oExcelSheet.XMLData)
Dim OptionNode As XmlNodeList = xmlDoc.GetElementsByTagName("x:WorksheetOptions")
OptionNode(0).InnerXml = strOptionNodeInnerXml


这样,原来经过导出时丢失的格式就会被重新写入,生成的Excel文件将保持原来的设计格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐