java导出excel表格多sheet问题。已有模板。附代码。

Table2是我需要的。模板中字段、数目都是确定的。不知道怎么分sheet插入。
@Service
public class ReportServiceImpl implements ReportService {
@Resource
SummarySheetMapper summarySheetMapper;
@Resource
private DicService dicService;

@Override
public byte[] getSummarySheet(String contextPath, String year) throws IOException {
    List<OrgOrder> orgOrders = summarySheetMapper.getOrgOrder();

    List<Services> services = summarySheetMapper.getServiceData(year);

    List<Dept1> dept1s = summarySheetMapper.getDept1Data(year);

    List<Dept2> dept2s = summarySheetMapper.getDept2Data(year);

    List<Entities> entitys = summarySheetMapper.getEntityData(year);

    List<Techs> techs = summarySheetMapper.getTechData(year);

    List<Icu> icu = summarySheetMapper.getIcuData(year);

    List<Table1> list = mergeAndSort(orgOrders, services, dept1s, dept2s, entitys, techs);
    List<Table2> list1 = mergeAndSort(orgOrders, icu);
    ListXlsReport<Table1> report = new ListXlsReport<Table1>(4, 4) {

        @Override
        protected void write(Table1 data, HSSFSheet sheet, int rowIndex, int columnBeginIndex) throws IOException {
            int index = columnBeginIndex;
            List<String> row = data.getRow();
            for (String s : row) {
                if (s != null)
                    XlsUtils.setCellValue(sheet, rowIndex, index, s);
                index++;
            }
        }
    };

    ListXlsReport<Table2> report1 = new ListXlsReport<Table2>(4, 4){
        @Override
        protected void write(Table2 data, HSSFSheet sheet, int rowIndex, int columnBeginIndex) throws IOException {
            int index = columnBeginIndex;
            List<String> row = data.getRow();
            for (String s : row) {
                if (s != null)
                    XlsUtils.setCellValue(sheet, rowIndex, index, s);
                index++;
            }
        }
    };
    report.addData(list);
    report1.addData(list1);

    System.out.println(list.size());
    System.out.println(list1.size());
    ByteArrayOutputStream buf = new ByteArrayOutputStream(1024 * 1024 * 2);
    File file = new File(contextPath, "files/template/summary_sheet.xls");
    if (file.isFile()) {
        FileInputStream template = new FileInputStream(file);
        try {
            report.build(template, buf);
            report1.build(template, buf);
        } finally {
            template.close();
        }
        return buf.toByteArray();
    } else {
        throw new FileNotFoundException(file.getAbsolutePath());
    }

}

private List<Table1> mergeAndSort(List<OrgOrder> orgOrders, List<Services> services, List<Dept1> dept1s, List<Dept2> dept2s, List<Entities> entitys, List<Techs> techs) {
    List<Table1> list = new ArrayList<>();
    for (OrgOrder o : orgOrders) {
        Integer orgId = o.getOrgId();
        Services service = find(orgId, services);
        Dept1 dept1 = find(orgId, dept1s);
        Dept2 dept2 = find(orgId, dept2s);
        Entities entity = find(orgId, entitys);
        Techs tech = find(orgId, techs);
        if (tech != null) {
            tech.setDicService(dicService);
        }
        Table1 t = new Table1(o, service, dept1, dept2, entity, tech);
        list.add(t);
    }
    Collections.sort(list);
    return list;
}

/*@Override
public byte[] getSummarySheet1(String contextPath, String year) throws IOException {
    List<OrgOrder> orgOrders = summarySheetMapper.getOrgOrder();
    List<Icu> icu = summarySheetMapper.getIcuData(year);
    List<Table2> list1 = mergeAndSort(orgOrders, icu);
    ListXlsReport<Table2> report1 = new ListXlsReport<Table2>(4, 4){
        @Override
        protected void write(Table2 data, HSSFSheet sheet, int rowIndex, int columnBeginIndex) throws IOException {
            int index = columnBeginIndex;
            List<String> row = data.getRow();
            for (String s : row) {
                if (s != null)
                    XlsUtils.setCellValue(sheet, rowIndex, index, s);
                index++;
            }
        }
    };
    report1.addData(list1);
    ByteArrayOutputStream buf = new ByteArrayOutputStream(1024 * 1024 * 2);
    File file = new File(contextPath, "files/template/summary_sheet.xls");
    if (file.isFile()) {
        FileInputStream template = new FileInputStream(file);
        try {
            report1.build(template, buf);
        } finally {
            template.close();
        }
        return buf.toByteArray();
    } else {
        throw new FileNotFoundException(file.getAbsolutePath());
    }
}*/


private List<Table2> mergeAndSort(List<OrgOrder> orgOrders, List<Icu> icu) {
    List<Table2> list = new ArrayList<>();
    for (OrgOrder o : orgOrders) {
        Integer orgId = o.getOrgId();
        Icu icus = find(orgId, icu);
        Table2 t = new Table2(o, icus);
        list.add(t);
    }
    Collections.sort(list);
    return list;
}


private static <T extends OrgData> T find(Integer orgId, List<T> list) {
    for (T d : list) {
        if (orgId.equals(d.getOrgId())) {
            return (T) d;
        }
    }
    return null;
}

}

1个回答

WritableWorkbook workbook = Workbook.createWorkbook(......);

       /** **********创建工作表************ */  

       WritableSheet sheet = workbook.createSheet("Sheet1", 0); 

0是第一个,1第二个

zhouxiaoyanios
zhouxiaoyanios 额,这样写sheet1的数据会被sheet2的覆盖掉,而且有模板了呢,不需要创建新sheet了,问题已经解决了,谢谢啦
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
jxls2.4.x 解决导出多sheet时多出模板sheet问题
最近一直在研究jxls导出问题,目前用的版本是2.4.3,标签都是写在批注中,很方便;最近做的项目需要用到导出多个sheet,导出方法很简单,但是始终会多出一个模板sheet,于是去官网找了例子查看,也都是带有一个Template的sheet,没有说明怎样去掉;找了api,方法jxlsHelper.setDeleteTemplateSheet(true)没有起作用;方法transformer.de...
关于easypoi模板导出多sheet的bug
         近期有这样一个需求,导出一份记录,按日期分sheet,每个sheet页格式一样(数据不一样,sheet页名暂时不考虑) 故想采用模板方式 进行导出,而easypoi也提供了多sheet页导出的接口,如图1 调用时发生如下错误: 由于未设定 setExcelExportStyler,在创建row时style为空 目前未找到解决方案...
Excel导出及多sheet导出
maven相关依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.poi&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;poi&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;3.9&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt;
导出多Sheet 的Excel
用c#语言 写导出多个Sheet 的Excel
案例:多sheet导出
JFinal POI-Excel导出视频教程,该课程主要讲解JFinal导出Excel文件的解决方案,主要使用POI导出,JFinal输出文件流下载到本地。
多Sheet导出excel
多Sheet导出excel,通过传来的Dataset,直接生成多sheet的excel,关键方法部分
java poi 导出excel表格 代码
//以下为导出------------------------------------------------------- /** * 导出Excel * @param excelName 要导出的excel名称 * @param list 要导出的数据集合 * @param fieldMap 中英文字段对应Map,即要导出的excel表头 * @return */ pub
excel附件多sheet导出
在项目过程中需要突然要求支持导出多个sheet的excel附件信息。并且每个sheet中的字段都不一样。 目前的解决方案是 通过配置execl的格式,在后台通过java反射机制动态生成导出对象的方式实现。 上传了源代码,但是不包含使用到的jar文件和公司封装的工具类。 注:如果有什么更好的方案请联系 zzhsnow@21cn.com.谢谢。
easyPoi多sheet导出excel
easyPoi多sheet页导出实例代码,附有数据库sql,支持多表头、合并单元格,通过注解形式导出excel,代码简介、轻松实现导出excel功能。框架使用struts2+spring+hibernate。
java使用freemarker作为模板导出Excel表格
 1:首先新建一个excel表格自己弄好格式如下图2:把excel 表格另存为xml格式文件如下图3:这个时候的文件就是xml 格式的文件了,在myeclipse里面项目工程里面新建一个文件后缀为.ftl 然后把弄好的xml文件内容直接复制粘贴到.fl文件里面如图...
大数据量分页查询导出以及多sheet导出
1、建立ExcelService注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.spri
多dataset 导出多sheet的execl
多dataset 导出多sheet的execl
Jxls导出报表多sheet导出
想用Jxls导出1000条数据,其中需要前500条在Sheet1中,后500条出现在Sheet2中。rnrnrn希望论坛的大神们给解决一下。
java 按照sheet读取excel表格
public class ReadExcel { public static Map&amp;amp;lt;String,ArrayList&amp;amp;lt;ArrayList&amp;amp;lt;String&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; readExcel(String fileName, String path) { Map&amp;amp;lt;String,ArrayList&amp;amp;lt;ArrayList&amp;amp;lt;
关于POI 导出多SHEET问题
我用一个sheet = workbook.creatbook(str)rn动态生成不同名字的 sheetrn然后对sheet循环操作rn这样会不会覆盖前面的数据rn但是这只是引用啊 我已经对这个名字的sheet操作完了
用java导出excel表格问题
我用java导出excel表格出了点问题,其中有个字段是时间大概格式是2000-01-01 12:12:12 这个样的格式,但导出后时间就成了12:12 了,从分开始的时间了。求解 rn我是在java直接传送一个字符串到jsp页面由JSP生成。rn一下是jsp页面的代码。 rnrn<%rn String fileName = (String)request.getAttribute("fileName");rn if(fileName == null || fileName.equals(""))rn fileName = request.getParameter("fileName");rn rn System.out.println("filename:"+fileName);rn String returnStr =(String)request.getAttribute("returnStr");rn System.out.println(returnStr);rn tryrn response.setHeader("Content-disposition","inline; filename="+fileName+"("+ FormatDate.toY_M_D(FormatDate.getCurrDate()) +")"+".xls");rn catch(Exception e)rn e.printStackTrace();rn rn%>rnrn rn rn rn <%=returnStr%> //传过来的字符串rn rnrnrnrn在excel表格里可以修改时间格式,但每次导出都要修改很麻烦,有木有办法在导出时时间格式就弄成我要的。我要的是2001/01/01 12:12:12 大概这样的时间格式。
jxls使用模板导出Excel表格
jxls使用模板导出Excel表格,java导出Excel
Java导出Excel表格
基本操作步骤 一个Excel文件对应一个workbook,一个workbook对应多个sheet,一个sheet由多行和列组成 (raw,cell),为们用poi要导出一个Excel表格的顺序应该是: 1.用HSSFWorkbook 打开或者创建Excel文件对象 2.用HSSFWorkbook对象返回或者创建Sheet对象 3.用Sheet对象返回行对象,用行对...
java导出excel表格
我是基于POI进行导出的。 首先,我们应该要知道的是,一个Excel文件对应一个workbook,一个workbook中有多个sheet组成,一个sheet是由多个行(row)和列(cell)组成。那么我们用POI导出一个Excel表格的顺序应该是: 1、用HSSFWorkbook打开或者创建“Excel文件对象” 2、用HSSFWorkbook对象返回或者创建Sheet对象 3、用Sheet对象...
java导出Excel表格实例
用java编写的实现把数据库中数据以Excel表格的形式导出来。
java导出excel表格--源码
import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
JAVA导出Excel表格 二
今天我们来讲一讲一个比较完整的java用poi导出Excel表格 1、第一步新建一个项目,项目结构如下: 2、第二步,在控制器创建一个主方法 public static void main(String[] args) { //得到数据 List list=new ArrayList(); list.add(new Student(1,"张三","...
java实现导出excel表格
项目需要导出数据,保存为excel形式,并且下载该文件,通过js下载保存的文件!
java excel表格导出
前言:该文章主要是利用poi去导出excel表格的总结。 导出excel核心代码,大致分为6步,可见代码注释。 public void exportRemarkExcel(IllegalWordVideoRemark videoRemark, HttpServletResponse res) throws BusinessErrorException { // 第一步...
JAVA导出excel表格
package com.fs.core.recharge.controller; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCell; import org.ap
JAVA导出EXCEL表格
工作时遇到了一个excel 导出的问题 , 原本是想直接用前端的table直接做excel 导出,但是又发现有点不满足需求 是 同是将三个小表格放入到一个excel表格中去,于是就上网找资料 这篇贴子就写的比较清楚详细 于是快乐的抄袭就开始了,但是发现一些不足之处,于是就稍微改动了一下,觉得还是满足使用的 #贴上代码 import org.apache.poi.hssf.userm...
Java如何导出Excel表格
Java导出Excel Markdown和扩展Markdown简洁的语法 代码块高亮 - 代码块 代码块语法遵循标准markdown代码,例如: //&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!—Servlet 界面直接调用就可以了,这里我不会转小数类型--&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a
java导出EXCEL表格—实战篇
做过后台管理系统的小伙伴基本都做过这个功能——导出EXCEL表格。 今天写篇文章,一旨在加深自己记忆,二给未做过此功能的小伙伴提供教程。 本文内容包含:实战教程+工具类(工具类下载地址在文末) 声明本文的业务场景:导出在bootstraptable中选中的数据至CSV文件。 静态页面 &amp;lt;button type=&quot;button&quot; class=&quot;layui-btn&quot; id=&quot;ex...
java导出Excel表格
用于报表一类的,java导出Excel表格
Java方式导出EXCEL表格
最近几天做公司项目,应客户需求需要将表单的数据下载本地存成.xls文件。之前做毕设的时候,就有类似这方面的功能需 求,但是当时也没有做就搁浅了下来,这次补上。 一、业务开发描述 二、前台jsp页面及js源码相关 2.1开始计算 2.2数据导出 三、后台action 四、servicel中的导出数据方法及设置excel格式 一、业务开发描述 有一个功能需求是做一了一个...
Java完成excel表格导出
public class ExcleService {       public boolean exportExcle(List list){     try {          // 新建excel的工作薄文件   Date date = new Date(); DateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS"
关于使用模板Excle导出excel表格的问题
下面是我在网上找到的代码。rnrn问题是我在visual2005中能调试成功,当我部署到II6.0中的时候总是出现 rnrn “System.NullReferenceException: 未将对象引用设置到对象的实例。”错误rnrn rn xBk.Close(false, null, null); 提示信息提示这段代码有问题 rnrn这个问题纠结好久了,高手帮帮忙rnrn rnrn例子是以现有的Excel模板为主,将数据导入进去,可动态创建sheet表,rn1、引用 using Microsoft.Office.Interop.Excel;rn2、代码如下rnusing System;rnusing System.Collections.Generic;rnusing System.Diagnostics;rnusing Microsoft.Office.Interop.Excel;rnusing System.Data;rnusing System.Configuration;rnusing System.Collections;rnusing System.Web;rnusing System.Web.Security;rnusing System.Web.UI;rnusing System.Web.UI.WebControls;rnusing System.Web.UI.WebControls.WebParts;rnusing System.Web.UI.HtmlControls;rnusing System.Data.OracleClient;rnrnpublic partial class fp_fp_fpjd : System.Web.UI.Pagernrn /// rn /// Excel应用rn /// rn private static Microsoft.Office.Interop.Excel.Application Excel = null;rn /// rn /// WorkBook应用rn /// rn private static Microsoft.Office.Interop.Excel._Workbook xBk = null;rn /// rn /// WorkSheet应用rn /// rn private static Microsoft.Office.Interop.Excel._Worksheet xSt = null;rn protected void Page_Load(object sender, EventArgs e)rn rn if (!IsPostBack)rn rn rn rn rn protected void Button2_Click(object sender, EventArgs e)//导出 rn rn Literal1.Visible = false;rn string id_char = ReTurnCheckedID_Char();rn if (GridView1.Rows.Count <=0)rn rn Literal1.Visible = true;rn Literal1.Text = "没有数据,无法导出!";rn return;rn rn if (id_char == "")rn rn Literal1.Visible = true;rn Literal1.Text = "请选择要导出的记录!";rn return;rn rn string[] IDArray = id_char.Split(',');rn int year = System.DateTime.Now.Year;rn int month = System.DateTime.Now.Month;rn int day = System.DateTime.Now.Day;rn tryrn rn string file = Server.MapPath(@"..\\Excel\\" + DpJdlx.SelectedValue);rn Excel = new ApplicationClass();rn object missing = System.Reflection.Missing.Value;rn xBk = Excel.Workbooks.Open(file, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);rnrn for (int i = 0; i < IDArray.Length; i++)rn rn DataSet ds = cldataset.ReTurnDataSet(strsql);rn if (i != 0)rn rn xSt.Copy(missing, xSt);rn rn xSt = (_Worksheet)xBk.ActiveSheet;rn xSt.Name = ds.Tables[0].Rows[0]["fp_number"].ToString();rn #region//拷贝过来的模板需要清除数据rn xSt.Cells[1, 1] = "";rn xSt.Cells[1, 2] = "";rn xSt.Cells[1, 3] = "";rn xSt.Cells[2, 4] = "";rn #endregionrn xSt.Cells[1, 1] = i+"a";rn xSt.Cells[1, 2] = i+"b";rn xSt.Cells[1, 3] = i+"c";rn xSt.Cells[2, 4] = i+"d";rn rnrn string filename = Server.MapPath("..\\Report_Temp") + "\\" + DpJdlx.SelectedItem.Text +".xls";rn xBk.SaveCopyAs(filename);rn ///输出Excelrn outputexcel(this.Page, filename);rn rn catch (Exception Ex)rn rn this.Page.Response.Write(Ex.ToString());rn rn finallyrn rn ///关闭Excelrn ExcelClose();rn rnrn rn private static void outputexcel(Page page, string filename)rn rn System.IO.FileInfo file = new System.IO.FileInfo(filename);rn page.Response.Clear();rn page.Response.Charset = "GB2312";rn page.Response.ContentEncoding = System.Text.Encoding.UTF8;rn // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 rn page.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpContext.Current.Server.UrlEncode(file.Name));rn // 添加头信息,指定文件大小,让浏览器能够显示下载进度 rn page.Response.AddHeader("Content-Length", file.Length.ToString());rn // 指定返回的是一个不能被客户端读取的流,必须被下载 rn page.Response.ContentType = "application/ms-Excel";rn // 把文件流发送到客户端 rn page.Response.WriteFile(file.FullName);rn // 停止页面的执行 rn page.Response.End();rn rn /// rn /// 删除进程rn /// rn /// 进程名称rn private static void KillProcess(string processName)rn rn System.Diagnostics.Process myproc = new System.Diagnostics.Process();rn //得到所有打开的进程rn tryrn rn foreach (Process thisproc in Process.GetProcessesByName(processName))rn rn if (!thisproc.CloseMainWindow())rn rn thisproc.Kill();rn rn rn rn catch (Exception Exc)rn rnrn rn rn /// rn /// 关闭Excelrn /// rn private static void ExcelClose()rn rn xBk.Close(false, null, null);rnrn Excel.Quit();rn System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);rn System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);rn System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel);rnrn xBk = null;rn xSt = null;rn Excel = null;rn GC.Collect();rn KillProcess("Excel");rnrn rnrn
Java导出excel表格
Java导出excel表格
Java导出Excel表格(jxl)
Java后台实现把数据导出到Excel表格中
java 导出 excel表格
利用java将实体类数据导出成excel表格格式
POI,Excel表格导出Java
使用poi技术导出excel表格的一个工具类,简单易用,只有把数据给进就可以了
使用java导出Excel表格
使用Jakarta POI实现导出Excel表格 导包就不讲了,下面直接看代码: package com.hxlh.common.service; import org.apache.commons.collections4.map.HashedMap; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf....
java的导出Excel表格
导出Excel表格 public void exportDeptdccl(HttpServletRequest request, HttpServletResponse response){ try { Integer totalRow1 = 0,totalRow2 = 0,totalRow3 = 0,totalRow4= 0; List deptName_list= new Arr
java实现excel表格导出
这里是一个小demo! int pageNum = 1; int pageSize = 2; int reportStatus = 0; String infoNum = ""; //第一步,创建一个webbook,对应一个excel文件 HSSFWorkbook wb = new HSSFWorkb
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池