0

我必须从 URL 读取一个 excel 文件并获取它的数据。文件的名称是company.xls,但是当我用记事本打开这个文件时,我发现它就像将xls 嵌入到HTML 中一样。Microsoft Excel 可以毫无问题地打开此文件,我可以使用 xls 扩展名保存此文件,但我必须以编程方式执行此操作,否则我必须找到任何其他方式来读取此文件。如何读取此文件的数据?由于它不是纯 xslt Apache poi 文件系统,因此出现以下错误;

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>
....
4

1 回答 1

0

我遇到过同样的问题。解决此问题的方法是在该 xls 文件中更改charset=Windows-1254为。charset=utf-8

于 2014-01-23T12:41:57.293 回答