我知道我们可以使用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