跪求jxl合成多个sheet的程序

卧石听泉 2010-03-18 10:56:44
跪求jxl合成多个sheet的程序,大师们,给我一个吧,我郁闷啊
我写了个,可出现数据串的情况,比如,四个单excel单sheet,合成一个excel四个sheet ,sheet1和数据sheet4出现错位,不明白,大师,请指点


package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import com.domain.ExcelMergeParamVo;

public class ExcelEmrger {

public static void main(String[] args) {
Map<String, String> subFiles = new HashMap<String, String>();
/*subFiles.put("rate_summary.xls", "rate_summary");
subFiles.put("gsm_rate.xls", "gsm_rate");
subFiles.put("gprs_rate.xls", "gprs_rate");
subFiles.put("sms_rate.xls", "sms_rate");
subFiles.put("ss_rate.xls", "ss_rate");*/
subFiles.put("custuserstat.xls", "custuserstat");
subFiles.put("custuserstat1.xls", "custuserstat1");
ExcelMergeParamVo paramVo = new ExcelMergeParamVo();
paramVo.setFileName("emergerExcel.xls");
paramVo.setSubFiles(subFiles);
paramVo.setDirPath("D:\\report_path\\");
String message = doEmergerExcel(paramVo);
System.out.println(message);

}

@SuppressWarnings("unchecked")
public static String doEmergerExcel(ExcelMergeParamVo paramVo) {
String message = "合成成功";// 定义返回消息
WritableWorkbook wwb = null;
Map<String, String> subFiles = paramVo.getSubFiles();
if (subFiles.size() < 1) {
message = "参数设置不正确";
return message;
}
Iterator keyValuePairs = subFiles.entrySet().iterator();// 文件名
try {
wwb = Workbook.createWorkbook(new File(paramVo.getDirPath()
+ paramVo.getFileName()));
while (keyValuePairs.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry) keyValuePairs.next();
String key = entry.getKey();
String value = entry.getValue();
InputStream is = new FileInputStream(paramVo.getDirPath() + key);
Workbook rwb = Workbook.getWorkbook(is);
Sheet st = rwb.getSheet(0);
wwb.importSheet(value, 0, st);
WritableSheet sheet = wwb.getSheet(0);
for (int row = 0; row < st.getRows(); row++) {
for (int col = 0; col < st.getColumns(); col++) {
Label label = new Label(col, row, st.getCell(col, row)
.getContents());
if (st.getCell(col, row).getCellFormat() != null) {
WritableCellFormat format = new WritableCellFormat(
st.getCell(col, row).getCellFormat());
label.setCellFormat(format);
sheet.addCell(label);
}
}
}
rwb.close();
}
wwb.write();
wwb.close();
} catch (Exception e) {
e.printStackTrace();
message = "合成失败";
return message;
}
return message;
}
}
...全文
121 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
APOLLO_TS 2010-03-19
  • 打赏
  • 举报
回复
这自己写完全可以吧!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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