.csvファイルからセルデータを取得しようとしていますが、エラーが発生します:jxl.read.biff.BiffException:認識できませんOLE stream
私はこれを解決する方法を理解していません、このコードはjxl api用であり、そのapiは.csvをサポートしていますか?
参照用のコード:
public void read() throws IOException, BiffException {
File inputWorkbook = new File(inputFile);
try
{
w = Workbook.getWorkbook(inputWorkbook.getAbsoluteFile());
// Get the first sheet
Sheet sheet = w.getSheet(0);
// Loop over first 10 column and lines
for (row = 1; row < sheet.getRows(); row++)
{
ReadExcelLotSizeEntity readExcelLotSizeEntity =new ReadExcelLotSizeEntity();
cell = sheet.getCell(1,row);
type= cell.getType();
if (cell.getType() == CellType.LABEL)
{
symbol=cell.getContents();
System.out.println(":::::::::::::::::"+symbol);
readExcelLotSizeEntity.setSymbol(symbol);
}
int col=2;
cell = sheet.getCell(col,row);
while(!cell.getContents().equals("")||cell.getContents()!=null)
{
System.out.println("||||||||||||||||"+cell.getContents());
cell=sheet.getCell(col,row);
col++;
}
lotSize= new Double(cell.getContents());
readExcelLotSizeEntity.setLotSize(lotSize);
readExcelLotSizeEntity.setCreateUserId(1L);
readExcelLotSizeEntity.setCreateDtTm(new Date());
readExcelLotSizeHome.persist(readExcelLotSizeEntity);
}
} catch (BiffException e) {
e.printStackTrace();
}
}
私も以前この問題に直面していました。このBiffException
に対する解決策を求めていたこの投稿と他の多くの投稿をGoogleで読みました。正確な解決策はありませんが、問題を修正したので、おそらくそれもできます。
MS Office 201に保存されたExcelファイルからデータを読み取ろうとしていましたが、このエラーが発生していました。ファイルをExcel 2003-7として保存し、問題なく読み取りました。この問題はOffice 1で発生するが、Office 2003-7では発生しない場合があります。
これがあなたのケースでうまくいくことを願っています。
「Excel 97-2003 Workbook」タイプとしてファイルを保存すると、問題が解決しました。
JXLライブラリは、Excel 2010で使用される.csv
および.xslx
形式をサポートしていません。したがって、.xls
でフォーマットされ、JXLライブラリでサポートされているExcel 97-2003を使用してください。または、Excel-2010を使用する場合は、JXLの代わりにApache POI(XSSFWorkbooks)を使用します。 .csv形式を使用する場合は、GoogleでCSVReaderライブラリを探します。
ExcelファイルタイプをExcel 97-2003ワークシートとして、拡張子タイプをxlsとして保存します。
[〜#〜] jxl [〜#〜] はシンプルな(したがって制限された)APIです。それが言うなら
OLEストリームを認識できません
それが現実さ。 Excel XLSファイルを完全には理解していません。エラーが正当なものであることを確信してください。このAPIは*.xls
ファイルのみをサポートします。たとえば、*.csv
または*.xlsx
ファイルはサポートしていません。明らかに、ファイル名を*.xls
に変更するだけでは不十分です。 Excel 97-2003形式でもある必要があります。
*.csv
または*.xlsx
ファイルからすべてのセルをコピーします。*.xls
)ファイルとして保存します。このエラーは再び表示されることはありません。
一方、他の形式(xlsx、csv)を直接処理する場合は、Apache POIなどの他のツールを探してください。
実際には、異なるバージョンのcsvファイルを使用しています。正確なバージョンで保存してください。
例:ExcelシートをWordで9として保存する必要があります
MS Office 2010に保存されたExcelファイルからデータを読み取ろうとしましたが、このエラーが発生していました。ファイルをExcel 2003-7として保存し、問題なく読みました。この問題は、Office 2003-7ではなくOffice 10で発生する場合があります
ファイルをExcel 97-2003として保存し、コード内のファイル形式をxlsxからxlxに変更します(ファイル名で)