如何阅读excel单元格格式(.XLS& .XLSX)

时间:2013-02-04 20:43:02

标签: openxml xls openxml-sdk xlsx npoi

我需要阅读excel中单元格中可用的格式信息。 excel文件可能包含一个文本格式为“Some sample text”的单元格。每个单词都有不同的格式信息。像“Some”这样的单词可能是粗体,并且具有不同的字体颜色和大小。下一个单词可能有不同的单词。

我们可以读取单个单元格值的单个格式信息吗?如果是,请告诉我如何做同样的事。

我曾经使用过NPOI和OpenXML SDK 2.5但没有运气。不希望使用excel互操作,因为这将在服务器中处理。

2 个答案:

答案 0 :(得分:2)

这是对您的问题的完整“黑客答案”。

我用这样的单个单元格创建了一个小的Excel文件:

screen shot of spreadsheet

我保存了文件,然后将其关闭。接下来,我将文件的扩展名从.xlsx更改为.zip - 这允许您打开它并查看内容。在名为xl的子文件夹中,您会找到一个名为“sharedStrings.xml”的文件,其中包含工作簿中的所有字符串及其在单元格中的格式。这是一个巨大的数组 - 这样做是为了在多个单元格中输入相同的值时,它只存储一次。通过这个文件来获取所有单元格中的所有字符串及其格式......

对于此特定单元格,sharedStrings.xml文件内容的开头如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="1" uniqueCount="1">
<si>
<r>
<t xml:space="preserve">This </t>
</r>
<r>
<rPr>
<b/>
<sz val="11"/>
<color theme="1"/>
<rFont val="Calibri"/>
<family val="2"/>
<scheme val="minor"/>
</rPr>
<t>cell</t>
</r>
<r>
<rPr>
<sz val="11"/>
<color theme="1"/>
... etc

通过阅读此文件,您将能够使用其格式重建所有字符串。必须有一个更好的方法......

答案 1 :(得分:1)

您正在谈论从Cell中读取Rich Text值。它将得到NPOI 2.0最终版本的支持。该版本将于2014年第一季度发布。