繁体   English   中英

解码由Excel生成的clipBoard的XML电子表格内容

[英]Decode XML Spreadsheet content of a clipBoard generated by Excel

我想在我的程序中做一个非常简单的事情:

当用户在Excel(2007 - 2016)中复制选择时,我希望能够读取剪贴板内容,然后提取所有值。

目前,Excel将不同的格式放入剪贴板批次,如Biff5,Biff8,CSV,纯文本/文本等。

一个简单的解决方案可能是使用CSV格式,但这不够精确,因为如果我在数字上翻滚,我不知道它是字符串还是excel文件中的数字。 日期也以原始格式发送,理解它会很痛苦。

所以我看到的解决方案是解析Excel发送的“XML Spreadsheet”,如下所示:

 <?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>
 </Styles>
 <Worksheet ss:Name="Feuil1">
  <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="3"
   ss:DefaultColumnWidth="60" ss:DefaultRowHeight="15">
   <Row>
    <Cell><Data ss:Type="Number">8</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="Number">9</Data></Cell>
   </Row>
   <Row>
    <Cell ss:Formula="=SUM(R[-2]C:R[-1]C)"><Data ss:Type="Number">17</Data></Cell>
   </Row>
  </Table>
 </Worksheet>
</Workbook>

在你问之前,我考虑过POI。 但据我所知,我需要使用XSSF。 但要使用它我需要poi-ooxml,并使用它我需要poi-ooxml-schemas和poi。 我不知道这些JAR的总重量,但我并不热衷于添加10Mb的罐子只是为了从clipBoard中提取信息。

有没有人试过这样做? 有没有可以做到这一点的项目?

可以在此处找到解决问题的代码:

https://github.com/Maxoudela/XMLSpreadsheetParser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM