java 操作excel时的问题

这样操作的时候如果dateList里面只有一条数据的时候不会有问题,但是当dateList有多条数据时会产生当遍历dateList月份为6时,创建出8月份的数据,月份为8时创建出6月份的数据,该如何操作才能月份为6时不会创建6和8月份的数据,dateList是动态的,即,如果为3、5的话不会创建3、5月的数据。
[code="java"]
//获取当前月份
int month = Calendar.getInstance().get(Calendar.MONTH)+1;
List dateList = new ArrayList();
dateList.add("2011-06-12");
dateList.add("2011-08-08");

for(int m = 1;m <= month; m++) {
XSSFRow yearRow = sheet.createRow((short)i++);
for(Iterator it=dateList.iterator();it.hasNext();){
String date = (String)it.next();
int e_month = Utils.getMonth(Utils.strToDate(date, "yyyy-MM"));//得到dateList中的月份
if(e_month == m){

                    }else{
                        cell = yearRow.createCell(4);
                        cell.setCellValue("2011"+"-"+m+"月");
                        for(int mm=5;mm<13;mm++){
                            cell = yearRow.createCell(mm);
                            cell.setCellValue(0);
                        }
                    }

                }


            }

[/code]

4个回答

举个例子
编号 姓名 月份 发生的事情
001 张三 2011-08-12 出差
001 张三 2011-06-14 回家
002 李四 2011-08-09 打架
你的这个表 应该是编号 姓名这几个是公用的 也就是你最开始生成最原始的excel的时候可能是这种情况
编号 姓名 月份 发生的事情
1 张三 2011-8-12 出差
1 张三 2011-6-14 回家
2 李四 2011-8-9 打架

我给你说的那种呢就是要变成
编号 姓名 月份 发生的事情
1 张三 2011-8-12 出差
2011-6-14 回家
2 李四 2011-8-9 打架

这样的excel。

首先按照原始的生成excel,无论重复与否,然后你合并公用的列,比如编号和姓名,那么自然就变成你想要的了。至于行和列,我你得在编写代码的时候自己去看看,我这里也说不清楚,大致就是由于你的表头是一定的,那么假如张山这个人有2条记录,那么你需要合并的范围就是
(int startRow, int startCol, int endRow, int endCol)
(1,0,2,1)。代码的逻辑你写写就应该出来了,还不懂的话 站内留言吧,欢迎采纳!

能大概说一下你想做什么吗?因为从代码的逻辑看不出你的目的,也看不明白你说的问题在哪。。。

重复的时候需要做成合并单元格的操作 你把共有的生成单元格的方法写成独立的 然后按照每个人的最大值来生成所有的表格,并且记住需要合并单元格的行和列,最后统一处理合并单元格,这个我以前弄过。

javaeye的格式不好调整
[table]
编号|姓名|月份|发生的事情
1|张三|2011-8-12|出差
| |2011-6-14|回家
2|李四|2011-8-9|打架
[/table]

立即提问
相关内容推荐