c# - 如何访问 XML 电子表格格式?

标签 c# .net xml excel

我想访问 Excel 放在剪贴板上的 XML 数据。

Visual Studio 2012、.NET 4.5、C#

我知道我可以用 XML 函数解析 XML 文档,但可能有更简单的工具可用。

理想情况下,我正在寻找类似 object GetCell(row, col) 的函数在特定位置传送内容。

我只需要访问表数据。

解析并没有那么简单,因为 Excel 会跳过空行和空列,并将索引放入后面的单元格中。

目前,我们使用的是制表 rune 本格式,但存在很多交换问题(混淆点和逗号、混淆日期格式、将文本解释为数字,...)。 xml 格式更加健壮。

下面是一个 XML 格式的相似示例。这是一个具有 3 列和 6 行的网格区域。请注意不同的数据格式以及空单元格和行。

我主要对解析 <table> 感兴趣.所有其他都不是主要兴趣。

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <NumberFormat ss:Format="Short Date"/>
  </Style>
 </Styles>
 <Worksheet ss:Name="Tabelle1">
  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="6"
   ss:DefaultColumnWidth="60" ss:DefaultRowHeight="15">
   <Column ss:AutoFitWidth="0" ss:Width="117"/>
   <Row>
    <Cell><Data ss:Type="Number">1</Data></Cell>
    <Cell><Data ss:Type="Number">2.2999999999999998</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="DateTime">2013-04-07T00:00:00.000</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">Number as Text:</Data></Cell>
    <Cell><Data ss:Type="String" x:Ticked="1">0123</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">next cell is empty</Data></Cell>
    <Cell ss:Index="3"><Data ss:Type="String">b</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">next 5 cells are all empty</Data></Cell>
   </Row>
   <Row ss:Index="6">
 <Cell><Data ss:Type="String">This is</Data></Cell>
    <Cell><Data ss:Type="String">the</Data></Cell>
    <Cell><Data ss:Type="String">last line</Data></Cell>
   </Row>
  </Table>
 </Worksheet>
</Workbook>

最佳答案

只需使用 XPath: /Workbook/Worksheet[@ss:Name="Tabelle1"]//Row[2]//Cell[2]/Data

这将选择工作表“Tabelle1”中的数据,第 2 行,第 2 单元格。

关于c# - 如何访问 XML 电子表格格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20329721/

相关文章:

c# - 如何让 Job 在 Quartz.Net 中引发 EventHandler?

c# - 基于集合的动态 Datagrid 列

c# - 如何修复这个特定的 "The call is ambiguous ..."

c# - 2013 年末使用 Oracle 数据库的 .NET 应用程序有哪些数据访问选项?

c# - 如何在 C# 中捕获 Shell 命令输出?

xml - 如何在 VB.NET 中读取 XML 元素

c# - 要求对 OWIN 应用程序的所有请求进行身份验证

c# - 正则表达式 c# 只有正数

html to excel - 在每一页上打印第 1 行

xml - 使用 Delphi 和 NativeXML 浏览 XML 文件 :