问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 往excel模板里写数,行不固定且最下面有合计,那位好点实例

发布网友 发布时间:2022-04-25 22:05

我来回答

1个回答

热心网友 时间:2023-10-15 20:35

嗨 你好

你可以参考一下:

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
* 导出excel
* @param reportParams  导出excel列名标示
* @param list导出excel值
* @param headersexcel头
* @param reportName·excel的sheet名
* @param response
* @param startRow从哪一行开始放list值
* @param startCol  从哪一列开始放list值
* @return
*/
public boolean report(ReportBean rb, List list, XlsHeaderBean[] headers, String reportName, HttpServletResponse response, int startRow, int startCol, HttpServletRequest request){
WritableWorkbook wwb = null;
OutputStream os;
boolean flag = true;
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String strDate = format.format(date);
try {
// 用Workbook类的工厂方法创建工作薄(Workbook)对象
response.setContentType("application/x-msdownload");
String sheetName = "report";
sheetName = sheetName.replaceAll(":", "").replaceAll("[)]", "")
.replaceAll("[(]", "");
// 这里解释一下
// attachment; 这个代表要下载的,如果去掉就编程直接打开了
// filename是文件名,另存为或者下载时,为默认的文件名
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(sheetName.getBytes("UTF-8"), "ISO-8859-1")+ strDate
+ ".xls");
os = response.getOutputStream();
wwb = Workbook.createWorkbook(os);
} catch (IOException e) {
e.printStackTrace();
return flag = false;
}
if (wwb != null) {
// 创建一个可写入的工作表
// Workbook的createSheet方法两个参数,1名称,2位置
WritableSheet ws = wwb.createSheet(reportName, 0);
// 下面开始添加单元格
// 导出excel
try {
Label labelC = null;
for(int j = 0; j < headers.length; j++){
if(headers[j].isUnion()){
ws.mergeCells(headers[j].getCol(), headers[j].getRow(), headers[j].getCol()+headers[j].getColLength(), headers[j].getRow()+headers[j].getRowLength());
}
labelC = new Label(headers[j].getCol(), headers[j].getRow(), headers[j].getValue());
ws.addCell(labelC);
}
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
String value = null;
for (int i = 0; i < list.size(); i++) {
Map values = (Map)list.get(i);
for (int j = 0; j < rb.getReportParams().length; j++) {
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC;
if(values.get(rb.getReportParams()[j]) == null){
value = "";
} else {
if(values.get(rb.getReportParams()[j]) instanceof java.util.Date){
value = format.format(values.get(rb.getReportParams()[j]));
} else if(values.get(rb.getReportParams()[j]) instanceof java.math.BigDecimal){
value = values.get(rb.getReportParams()[j]).toString();
} else {
value = values.get(rb.getReportParams()[j]).toString();
}
}
labelC = new Label(j+startCol, i + startRow, value);
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
return flag = false;
} catch (WriteException e) {
e.printStackTrace();
return flag = false;
}
}
}
if(rb.isHasImg()){
String rootPath = this.getServletContext().getRealPath("savefiles");
String imgPath = rb.getImgPath();
if(rootPath != null && rootPath.compareTo("") != 0 && imgPath != null && imgPath.compareTo("") !=0){
String[] strs = imgPath.split("\\/");
String imgName = strs[strs.length-1];
File file = new File(rootPath + File.separator + imgName);
if(file.exists()){
WritableImage wi = new WritableImage(0, startRow + list.size() + 2,12,20, file);
ws.addImage(wi);
}
}
}
try {
// 从内存中写入文件中
wwb.write();


wwb.close();
return flag;
} catch (IOException e) {
e.printStackTrace();
return flag = false;
} catch (WriteException e) {
e.printStackTrace();
return flag = false;
}
}
return flag;
}

追问兄弟,我是想往模板里写,打开EXCEL,往模板与,不是新建的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 怎样做蒜苔 国外哪个机房的服务器好 国外服务器哪个机房速度快? poi excel如何用java代码生成 如何用java将数据库里面的数据生成excel,然后展示在jsp页面上 蒜苔有哪些做法 蒜苔是餐桌上的美食,都有哪几种做法? 评定齿轮和齿轮副精度有哪些检验项目 小规模纳税人(个体户)按季申报,流程是怎么样的?需要怎么做? 齿轮的精度等级与齿轮的选材及热处理方法有什么关系 蒜苗除了拿来炒肉,还有哪些花式做法 齿轮加工材料有那些?精度如何选定? 齿轮精度 请问圆柱直齿轮和圆柱斜齿轮的精度等级有哪些和哪几种? 什么是齿轮精度? 小规模申请一般纳税人网上流程 齿条,齿轮6级精度是啥概念?谢谢 齿轮传动的平稳性精度主要是根据什么选择的 齿轮精度等级分几级 齿轮常用的精度等级 美国哪些机房,中国访问速度快,如何测试速度 求java excel导出完整模板例子,最好附上jar包 美国机房哪个机房好,要速度快,稳定的机房? java怎么实现导出excel 租用海外服务器,国外访问速度比较好的机房有哪几个?怎么选择好的海外服务器?从哪几个方面选择? 国外带硬防的服务器,哪个机房最好 java是否有办法生成带有vba脚本的Excel 国外哪个机房的空间比较好? 美国哪个机房的服务器好 美国服务器哪家好?有没有性能比较好的推荐? 国外空间哪个好?如何选择国外服务器! 做在线直播不卡顿的国外服务器哪家比较好? 国外哪个机房带硬防的服务器最好? 国外服务器哪家好? 中国发行的第一套邮票 美国VPS服务器租用?哪个机房的好 现在比较知名的国外主机都有哪些? 哪有好的海外BGP机房可以推荐 中国成立发行的第一套邮票是 中国发行的第一版人民币,第二版,第三版,第四版,各在那年那月发行的?