java - 解码 Excel 生成的剪贴板的 XML 电子表格内容

标签 java excel apache-poi clipboard spreadsheetml

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

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

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

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

所以我看到的解决方案是解析 Excel 发送的“XML 电子表格”,它看起来像这样:

 <?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 的 jar 只是为了从剪贴板中提取信息。

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

最佳答案

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

https://github.com/Maxoudela/XMLSpreadsheetParser

关于java - 解码 Excel 生成的剪贴板的 XML 电子表格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387511/

相关文章:

java - 如何在Spring的应用程序上下文中添加http session 管理标签?

java - 将 quartz 添加到项目会破坏 jdbc 数据源

java - 使用 HSSF 从 Excel 中读取字符串值,但它是双倍的

java - 逐个单元格复制 Excel 数据

java - java中如何读取超过100000行的excel文件?

java - 错误: @dagger. 使用了android.ContributesAndroidInjector,但是找不到dagger.android.processor.AndroidProcessor

java - MongoDB 从 BasicDBObject (Java) 中提取值

java - 从 Excel 第一列获取错误的数值

excel - 如何在 Excel UDF 函数中返回值?

java - Spring 在上传到服务器时损坏 Excel(xlsx, xls) 文件 (org.apache.poi)