ファイル私は奇妙な問題を抱えている:私は、メモ帳やMSエクセルで正しく2010読むバイナリ文字は
を読んでCSVファイルを持っている私は、このコードで、このファイルの行を読んでみました:
BufferedReader source = new BufferedReader(new FileReader(fileName));
String currentRow = null;
while (null != (currentRow=source.readLine())){
System.outprintln(currentRow)
}
プログラムが実行されるとき、私はバイナリ文字を読み込み、行の長さは現実とは異なります(私は行に2000文字が必要で、55文字または1文字を見つけました)。
私はEclipseで動作します。私はテキストエディタとして、このCSVファイルを開くと、私は奇妙な文字を読んで、私はシステムエディタとして、それを開いたとき、私はMS Excelの内部で正しい値を読み取ります。
このファイルのタイプは、カンマ区切りのMicrosoft Excelのファイルです:このファイルにはバイナリ文字がいくつかありますか?
私はこのコードではApache POI(CSVでとXLSでファイルの読み込み)を使用しようとした:
public void displayFromExcel (String xlsPath){
POIFSFileSystem fileSystem = null;
try{
fileSystem = new POIFSFileSystem (new FileInputStream (xlsPath));
HSSFWorkbook workBook = new HSSFWorkbook (fileSystem);
HSSFSheet sheet = workBook.getSheetAt (0);
Iterator<Row> rows = sheet.rowIterator();
while (rows.hasNext()){
HSSFRow row = (HSSFRow) rows.next();
System.out.println ("Row No.: " + row.getRowNum());
Iterator<Cell> cells = row.cellIterator();
while (cells.hasNext()){
HSSFCell cell = (HSSFCell) cells.next();
System.out.println ("Cell No.: " + cell.getCellNum());
switch (cell.getCellType()){
case HSSFCell.CELL_TYPE_NUMERIC :
System.out.println ("Numeric value: " + cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING :
HSSFRichTextString richTextString = cell.getRichStringCellValue();
System.out.println ("String value: " + richTextString.getString());
break;
default :
System.out.println ("Type not supported.");
break;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
私がコンソールにこのメッセージが表示された、機能していません。
java.io.IOException: Invalid header signature; read 0x003000310030FEFF, expected 0xE11AB1A1E011CFD0
at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:125)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:153)
それはこの命令を実行します は
:
POIFSFileSystem fileSystem = new POIFSFileSystem (new FileInputStream (xlsPath));
私は、ライブラリを使用しようとしたdatafile d Java I/O(DataInputstream
など)ですが、成功しません。
解決策はありますか?
投稿したエラーに基づいてExcelファイルのヘッダが間違っていると思います。 – Adrian
0xfffeはいくつかのテキストファイルの先頭にあるいくつかのユニコードヘッダです。 – James