產生我想要做一個很簡單的事情在我的程序剪貼板的解碼XML表格內容:用Excel
當用戶做在Excel(2007至2016年)選擇的副本,我想能夠讀取剪貼板內容,然後提取所有值。
目前Excel中提出到剪貼板許多不同的格式,如BIFF5,BIFF8,CSV,純/文本等
一個簡單的解決方案是使用CSV格式,但是這不夠精確,因爲如果我翻滾一個數字,我不知道它是否是一個字符串或在Excel文件中的數字。日期也以原始格式發送,理解它會很痛苦。
所以我看到的解決方案是解析「XML電子表格」用Excel發送它看起來像:
<?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來提取clipBoard中的信息。
有沒有人試過這樣做?有沒有一個項目可以做到這一點?
如果你只是想簡單的單元格的值,你可以敲了一個自定義的SAX解析器幾百行代碼,使用內置的JVM XML處理工具 – Gagravarr
這個XML格式與docx-files中的格式看起來不一樣,所以在任何情況下都需要以不同的方式進行解析,並且POI甚至無法解析它庫。 – centic
我實現了一個自定義的解析器,並自己做了。以前沒有人做過。我會把它放在我的github上,並在這裏上傳鏈接,以防有人想要做同樣的事情。 – Maxoudela