用XML操作Excle文件。

 用XML操作Excle文件

 

 

 

在项目中有时候需要将数据输出到Excle,办法很多,比如说用ADO,但是这些都不能满足性能上的要求,如果你将10W条数据用ADO方式写入数据库,速度是很慢的。而且还不能对生成的Excle设置格式。

一个偶然的机会,我发现将Excle档保存为XML(表格),然后用记事本打开就会发现,整个文件就是一个XML数据.对这个文件进行操作还能得到复杂的效果,比如:合并单元格,字体,颜色,甚至是为单元格设置公式。

 

比如这样的:

效果图

 


 

一些值得注意的地方:

一 .文件头部有以下信息:

 
 其中,一下几个部分可以修改,其意思很简单,懂点E文就知道了.

 
二 .接下来你将看到<Styles>部分,大概就像这样:
 

 
  <Styles>部分定义了一个样式的集合,每一种样式都在<Style></Style>中描述,我的理解是,每 一个样式都是代表了一个单元格的形态,注意是一个,能不能在一个单元格上组合多个此处定义的样式,还没测试.在<Style>中:
  ss:ID        定义该样式的名称,要使用一个样式的时候需要用到.
  <Borders><Borders/> 这个东西就说明当前单元格的四个边的样式(有没有线条?线条多粗..)
  Font        定义单元格上文字的样式
  Interior: 指的是底色,ss:Color用于描述颜色,ss:Pattern 描述如何绘制
 
三 .数据部分
在这部分,你会看见类似这样的内容:


说明:   
<Worksheet ss:Name="Sheet1">   
这里说明有一个叫做Sheet1的表单


<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="6" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
对于这个表单的总体数据描述:
ss:ExpandedColumnCount="9"   数据表格有9列  
ss:ExpandedRowCount="6"      数据表格有6行
后面的就是设置一些默认属性,如果你在后面具体的表格上没有指定样式,就会用到这些.


<Column ss:AutoFitWidth="0" ss:Width="50.25"/>
依次定义ss:ExpandedColumnCount个列的宽和高

接下来就是数据部分了,完整的一行大概是这样的:

 <Row ></Row>部分描述的这一行的默认属性,它也可以指定样式,比如<Row ss:AutoFitHeight="0" ss:StyleID="s22">,这样的话,在这一行上面,任何没有特殊指定样式的表格都是这个默认样式.
 <Cell><Cell/>部分描述具体一个表格的样式,必须使用前面你已经定义好的<Style>.
 
四 .数据尾部

就是这个样子:


 这些一般用处不大,没有仔细研究.

 

 

其他:在程序中可以用TinyXML来操作XML,另外还有编码问题要考虑,文件保存为*.xml,你发现即使安装的Excle,这个问默认的打开方式可能也不是Excle,有个技巧,将你文件的头部插入2 个字节,内容为[0xFF,0xFE].

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值