我知道我們可以使用Apache POI解析Excel文件並獲取數據。但我聽說過一個奇怪的事情,可以像我們解析CSV一樣傳遞excel文件(就像從文件Stream中讀取文件並用「逗號」分隔符分隔每個列值)。當我們解析Excel時,我們必須使用tab作爲分隔符。可能嗎?如果是的話,爲什麼Apache會提出這樣一個複雜的框架。我感到困惑。有人能幫我嗎?解析沒有Apache POI的Excel文件
回答
CSV是一種文本格式,因此它可以使用分隔符進行分析。舊的Excel是一種二進制和專有格式,因此它需要巧妙的解碼。新的Excel格式是壓縮的XML格式,但也應該理解本文檔的結構,然後才能將其轉換爲逐個讀取單元格之類的簡單內容。所以你的問題的答案是否定的,你需要使用Apache POI,並且也沒有什麼問題。
作爲一個便箋,在成爲一名優秀開發人員的道路上,您需要學習在尋求幫助之前做一些自己的研究。把你的手弄髒是學習東西的最好方法。
你可能已經混淆了你所聽到的或者告訴你的人感到困惑。
Excel文件的某些部分可以作爲CSV文件存儲(有點),因爲表格數據結構完全符合CSV文件格式。但是,如果您以CSV格式保存,那麼您只需在每個單元格中獲取純文本 - 您將丟失所有格式信息,任何圖表,多個工作表等。
原生XLS excel格式是Apache POI使用的格式,因此可以處理excel中的所有內容,而不僅限於某些單元格中的限制性純文本。 CSV文件有它們的用途,但它們絕對不是對普通Excel文件的直接替換。
如果我創建的Office 2003的Microsoft Excel與只包含文本數據的4×4單元文件。然後,如果我在輸入流中讀取文件,並嘗試將「\ t」作爲分隔符。那麼它會在沒有Apache POI的情況下工作嗎? – 2012-04-20 15:18:19
只有在使用CSV時,才使用XLS格式。 – berry120 2012-04-20 15:20:14
明白了!謝謝:) – 2012-04-20 15:31:58
我試圖讀取/寫入excel文件,而不使用像POI或任何其他外部JAR文件。我能夠以xls格式編寫文件。這裏是我的代碼
FileWriter fwriter = new FileWriter(file,true);
writer = new BufferedWriter(fwriter);
writer.newLine();
writer.write("a" + "\t");
writer.write("b" + "\t");
writer.write("c" + "\t");
writer.write("d" + "\t");
writer.write("e" + "\t");
writer.write("f" + "\t");
閱讀文件 這裏是我的代碼讀取
if(file != null) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String line;
while((line = reader.readLine()) != null) {
String[] component = line.split("\\t");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
這不是一種Excel格式,您正在編寫/閱讀的是製表符分隔的文本文件。只有Excel才能以打開其專有格式的文件的方式打開CSV或TSV。 – maksimov 2016-02-18 20:09:13
InputStream is = new FileInputStream(new File(filepath));
StreamingReader reader=null;
try {
reader = StreamingReader.builder()
.rowCacheSize(100)
.bufferSize(4096)
.sheetIndex(0)
.read(is);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
is.close();
}
//pass here to reader and itrate it
for (Row row : reader) {
if (row.getRowNum()!=0){
for (Cell cell : row) {
// write ur logic to store ur value
}
}
}
- 1. Apache POI修改現有的Excel文件
- 2. 解析沒有庫的excel文件
- 3. Apache POI解析錯誤
- 4. Apache poi創建錯誤的Excel文件
- 5. 閱讀java中的excel文件Apache Poi?
- 6. 的Apache POI:更新Excel文件
- 7. Apache poi excel
- 8. excel java apache poi
- 9. 用apache poi從Java寫入Excel文件
- 10. 使用Apache POI更新Excel文件
- 11. Java Apache-poi,excel文件內存泄漏
- 12. 使用Apache poi彈出excel文件
- 13. 使用Apache POI操作excel文件
- 14. 使用apache poi處理excel文件
- 15. Apache POI - 讀取excel文件時出錯
- 16. 錯誤而解析的.xlsx與Apache POI
- 17. Apache POI註釋Excel
- 18. 在Java中解析excel時Apache Poi問題?
- 19. 如何使用POI解析Excel文件中的UTF-8字符
- 20. PHP沒有被Apache解析
- 21. Apache POI jar沒有hwpf包
- 22. 無法使用Apache POI解析CTDataModel 3.13
- 23. IDEA/Maven無法解析Apache POI類
- 24. 使用apache poi修改現有的excel
- 25. 寫作到Excel使用Apache POI破壞的Excel文件
- 26. 圖像插入被Apache POI到excel文件,但它們沒有顯示
- 27. Apache poi excel評論包裝文本
- 28. Apache POI Excel - 搜索並替換文本
- 29. 使用Apache Poi解析Word文檔中表格中的表格
- 30. Apache POI Excel抄本TXT
嘿謝謝你,我盡我最大努力讓自己的手變髒。所有的方式都說我不能做製表符分隔解析。但是,堅持這個的人肯定他在說什麼。這就是爲什麼我尋求你的幫助。 :) – 2012-04-20 15:26:54
有時人們有錯誤的信息,有時這些人固執。給你「製表符分隔」應該是一個「文本文件」。文本文件在記事本中打開。嘗試在記事本中打開Excel文件,看看會發生什麼。 – maksimov 2012-04-20 15:30:23
好吧。感謝您的幫助夥計:) – 2012-04-20 15:32:28