2013-10-02 23 views
0

我必須從URL讀取excel文件並獲取其數據。文件的名稱是companies.xls,但當我用記事本打開此文件我發現它像嵌入式XLS到HTML。 Microsoft Excel打開此文件沒有任何問題,我可以用xls擴展名保存此文件,但我必須以編程方式執行此操作,或者我必須找到任何其他方式來讀取此文件。我怎樣才能讀取這個文件的數據?既然不是純粹的xslt Apache poi文件系統給出了以下錯誤;如何從URL中讀取嵌入式XLS文件

java.io.IOException: Invalid header signature; read 0x6D78206C6D74683C, expected 0xE11AB1A1E011CFD0 

這是我的代碼;

URL companyList= new URL("someURL.xslt"); 
     InputStream inputStream = companyList.openStream(); 
     POIFSFileSystem fs = new POIFSFileSystem(inputStream); 

xls文件或html;

<head> 
<meta http-equiv=Content-Type content="text/html; charset=Windows-1254"> 
<meta name=sssId content=Excel.Sheet> 

<style type="text/css"> 
body,table,tr,th,td {font-family:Arial;font-size:11pt;color:#000;} 
.th {padding:3em;background:#3366FF;text-align:center;color:#ffffff;} 
.td {padding:2em;background:#ffffff;} 
</style> 

<!--[if gte mso 9]><xml> 
<x:ExcelWorkbook> 
<x:ExcelWorksheets> 
<x:ExcelWorksheet> 
<x:Name>Companies</x:Name> 
<x:WorksheetOptions> 
<x:DefaultRowHeight>285</x:DefaultRowHeight> 
<x:FreezePanes/> 
<x:FrozenNoSplit/> 
<x:SplitHorizontal>1</x:SplitHorizontal> 
<x:TopRowBottomPane>1</x:TopRowBottomPane> 
<x:ActivePane>2</x:ActivePane> 
<x:Panes> 
    <x:Pane> 
    <x:Number>3</x:Number> 
    </x:Pane> 
    <x:Pane> 
    <x:Number>2</x:Number> 
    </x:Pane> 
    </x:Panes> 
</x:WorksheetOptions> 
</x:ExcelWorksheet> 
</x:ExcelWorksheets> 
</x:ExcelWorkbook> 
</xml><![endif]--> 

</head> 
<body> 
<table width="100%" border="1"> 
<tr><th width="85%" class="th">Company Name&#305;</th><th width="15%"  class="th">City</th></tr> 
<tr><td width="100%" class="td">Microsoft</td><td width="100" align="center" class="td" nowrap>sValley</td> </tr> 
<tr><td width="100%" class="td">Google</td><td width="100" align="center" class="td" nowrap>london</td></tr> 
.... 
+0

POIFSFileSystem用於原生XLS變體(又名POI HSSF)。您需要XSSF for xml - 請參閱http://poi.apache.org/spreadsheet/how-to.html獲取更多信息......但我懷疑(即我沒有嘗試過)XSSF可以讀取您格式錯誤的輸入。 Excel可以隨時轉換各種輸入,例如您可以將html-table-style元素保存爲.xsl,並且無論如何都會打開它。 – kiwiwings

回答

0

我有同樣的問題。此問題的修復方法是在該xls文件中將charset=Windows-1254更改爲charset=utf-8