poi解析excel的问题

csu_NO1_java 2010-09-13 12:15:16
我是个新手,现在做一个打开office的阅读器,用Java开发。
我解析excel文件内容的时候,发现只能获得纯文本,然后显示在JTable中,请问下:
像excel中单元格合并后的数据怎样得到数据的同时也得到单元格合并的信息,比如说
所获得的数据在excel中是横向和纵向合并多少个单元格,然后在JTable中也以这种合并单元格的方式进行显示出来。
还有,怎样获得EXCEL中的图片和图表,然后以跟excel中一样的方式进行显示出来。
急!!!
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcdsda 2010-09-15
  • 打赏
  • 举报
回复
在jTable中不带合并单元格的功能,得自己重写这个控件。具体的我也没写过,但是查找过这方面的资料,去google一下还是能找到相关资料的。

如果能用。net做的话,就有一个flexcell.dll的文件,能支持单元格合并等多多种excel里面的常见操作。一定得用java的话,那只有。。。加油把
amos1989 2010-09-15
  • 打赏
  • 举报
回复
没用POI搞过图片。。。
amos1989 2010-09-15
  • 打赏
  • 举报
回复
没用POI搞过图片。。。
csu_NO1_java 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qianzhimeiying 的回复:]
杯具了,据我所知,poi目前还不能读图表,
jxl可以读图片,但是支持得也不好
[/Quote]

得到图表和图片,一网友说可以这样做
HSSFChart.getSheetCharts(wb.getSheetAt(0))//获得EXCEL第一张工作表中的图片和图表
我还没有试验,也不知道,呵呵
csu_NO1_java 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qianzhimeiying 的回复:]
引用 3 楼 flagiris 的回复:
好像不行,poi写入excel的时候倒是可以合并单元格,
要读取合并单元格的情况还没见过,当然内容是可以读取的。

哦,可以读的
用sheet.getNumMergedRegions取得被合并的格子数
然后用getMergedRegion(int index)取得某个索引上的合并区域CellRangeAddress
然后用CellRangeA……
[/Quote]

非常感谢你,现在就图表和图片的问题了,还有就是在JTable中显示的问题了,由于以前很少接触Swing
,所以JTable的单元格动态合并估计也是比较难的一个问题,这几天自己多研究一下。
至于得到图表和图片,一网友说可以这样做
HSSFChart.getSheetCharts(wb.getSheetAt(0))//获得EXCEL第一张工作表中的图片和图表
当然,我都还没有试。。。
不过感觉即使获得了,但是这些图标和图片在Excel中显示的位置也拿不到,悲剧。
zxj828282 2010-09-15
  • 打赏
  • 举报
回复
投票投票top
qianzhimeiying 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 flagiris 的回复:]
好像不行,poi写入excel的时候倒是可以合并单元格,
要读取合并单元格的情况还没见过,当然内容是可以读取的。
[/Quote]
哦,可以读的
用sheet.getNumMergedRegions取得被合并的格子数
然后用getMergedRegion(int index)取得某个索引上的合并区域CellRangeAddress
然后用CellRangeAddress的getFirstColumn getFirstRow getLastColumn getLastRow
可以知道此区域覆盖哪些格子
但是图表搞不定,估计要换条路走了
菖蒲老先生 2010-09-14
  • 打赏
  • 举报
回复
好像不行,poi写入excel的时候倒是可以合并单元格,
要读取合并单元格的情况还没见过,当然内容是可以读取的。
qianzhimeiying 2010-09-14
  • 打赏
  • 举报
回复

List lst = workbook.getAllPictures();
for (Iterator it = lst.iterator(); it.hasNext(); ) {
PictureData pict = (PictureData)it.next();
String ext = pict.suggestFileExtension();
byte[] data = pict.getData();
if (ext.equals("jpeg")){
FileOutputStream out = new FileOutputStream("pict.jpg");
out.write(data);
out.close();
}
}

读图片的话,可以用这个试试,图表我还没找到资料
qianzhimeiying 2010-09-14
  • 打赏
  • 举报
回复
杯具了,据我所知,poi目前还不能读图表,
jxl可以读图片,但是支持得也不好

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧