ascendlin 2011-08-19 12:08 采纳率: 0%
浏览 229
已采纳

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条回答 默认 最新

  • AngelAndAngel 2011-08-22 14:19
    关注

    举个例子
    编号 姓名 月份 发生的事情
    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)。代码的逻辑你写写就应该出来了,还不懂的话 站内留言吧,欢迎采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?