对于EXCEL2003的XML格式文件的解析

本文介绍了如何从EXCEL2003的XML格式文件中读取数据。通过分析XML文件结构,重点讲解了如何解析<Worksheet>中的数据,包括工作表名、最大行数和列数,以及如何处理单元格数据。文章提供了相应的C++代码示例,展示了如何读取和处理XML文件中的数据。
摘要由CSDN通过智能技术生成

标 题: 对于EXCEL2003的XML格式文件的解析
作 者: Sdoat

时 间: 2010-09-20,16:41:00

链 接: http://blog.csdn.net/sdoat/archive/2010/09/20/5897404.aspx

首发CSDN,欢迎转载,转载请注明来源,谢谢!

工作中,很多时候用到Excel处理分析数据,而更深层次的数据挖掘,可能需要编写专门的程序进行处理,这时候有一个问题,就是如何从EXCEL中读取数据。

从EXCEL中读取数据,有多种方法,本文仅仅探讨文本读取的方式。EXCEL支持多种存储方式,从XLS到TXT到XML到....,本文仅仅探讨从EXCEL2003中的XML格式中读取指定数据。

 

本文环境:XP SP2  + VC6.0  + MS Office2003

本文工具:EXCEL2003 + VC6.0 + UE15.0

 

首先,分析一下XML的文件格式。

使用UE打开XML文件,可以看到,文件开头是XML文件头信息。

其中<Workbook>是EXCEL文件的内容;

<DocumentProperties>、<OfficeDocumentSettings>、<ExcelWorkbook>是文档的属性,本文重点是读取内容,故这些信息统统忽略;

<Styles>是EXCEL中段落、文字所有的属性,<Style>中是每一种不同的属性,所有的这些属性都有自己的id,此处也不是重点,也忽略;

<Worksheet>是工作表的信息,EXCEL文件中有几个工作表,此处就会有几个<Worksheet>的信息,所有的数据都存放在这些<Worksheet>中,我们的解析也主要以<Worksheet>为主。

 

<Worksheet ss:Name="工作表名">,此处可以获得工作表名,EXCEL中工作表必须有名字,故此处必定不为空。

接来下是一个<Table>,在<Table>中可以读取到此工作表最大的行数和列数,其存储形式为

<Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="63" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">

这表明,此张工作表,最大列数为5,最大行数为63,其它为大小控制信息,忽略;

 

接下来有一系列的<Row>,这个工作表,总共有63个,而每个<Row>里面最多有5个<Cell>。

<Row>中存放的是一行的数据,而<Cell>中存放的是行中每一个有有效数据的格子的数据。

 

我们解析的时候,先根据<Row>读取每一行数据,然后再根据<Cell>解析出每一个格子的数据。

而<Row>中第一个<Cell>中可能存在下面数据    ss:Index="5",这个代表这一行中第一个有有效数据的格子是第5个格子,也就是说这一行的前四个数据都是空,我们还会看到   ss:StyleID="m153114702" ,这是代表这个单元格的属性,如果想知道这个属性是什么,请在UE中搜索m153114702,然后去看文件最前面的那个搜索结果,里面有定义,不过,此文忽略,

然后通常情况下,我们会看到一个<Data>,这里面就存储着我们需要的数据&#x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值