java跨行_java实现导出Excel(跨行,跨列)

本文介绍如何使用Java实现一个导出带有跨行跨列效果的Excel文件。首先,通过参数获取部门信息和季度,然后创建工作簿并命名,接着根据参数创建sheet页签,动态生成页签名称。数据从数据库中获取,每个页签有不同的数据内容,创建表头并写入数据,最后将数据写入到对应的Excel表格中。整个过程涉及数据库连接、文件操作和Excel工作簿、工作表的创建与填充。
摘要由CSDN通过智能技术生成

先来个最终结果样式:

e3651f58a2c4b58785cb01843e150199.png

第一步: 传参,后期可根据自己需要进行调整。我这里需要的是

quarter 代表季度

dptid 部门编号

根据接受过来的参数进行文档命名。

UserInfo userInfo=(UserInfo)request.getSession().getAttribute("userInfo");

String userid=userInfo.getUserID();

String quarter= request.getParameter("quarter");

String dptid= request.getParameter("dptid");/***********************EXCEL导出部分**************************/String str3=FileInfoTools.getSystemFilePath()+ "/documentTemp/";

File file= newFile(str3);if (!file.exists() && !file.isDirectory()) {

file.mkdir();

}

String names= new SimpleDateFormat("yyyyMMddhhmmssSSS").format(newDate());

String ourl= str3 + names + "_"+userid+".xls";

FileOutputStream fos= null;

String fileName= "";try{

HSSFWorkbook wb= new HSSFWorkbook();//创建工作薄

fileName = "安全可控导出"+"_"+userid+"_"+names+".xls";

DBManager dbm= newDBManager();

System.out.println("quarter+"+quarter+"dptid="+dptid);try{

dbm.newConnection();

String str= "select departmentname from dpt_department where departmentid='"+dptid+"'"; //获取唯一id

String dptName =dbm.executeQueryString(str);

fileName=dptName+"部门安全可控清单汇总"+"_"+userid+"_"+names+".xls";//创建sheet页,并写入内容

createSheet(dbm,wb,getCardInfo(dbm,quarter,dptid));

}catch(Exception e){

e.printStackTrace();

}finally{

dbm.closeConnection();

}

File ff= newFile(ourl);if(ff.exists()) {

ff.delete();

}

fos= newFileOutputStream(ourl);

wb.write(fos);

fos.close();

String u= "/project/system/fileAction.do?filePath=" +URLEncoder.encode(ourl)+ "&fileName=" +URLEncoder.encode(fileName);

response.sendRedirect(u);

}catch(Exception e) {

e.printStackTrace();

}

第二步:创建sheet页签

public voidcreateSheet(DBManager dbm,HSSFWorkbook w,Vector vt) throws Exception{for(int i=0;i

Hashtable ht= (Hashtable)vt.get(i);

String id= (String)ht.get("id");

String quarter= (String)ht.get("quarter");

HSSFSheet sheet= w.createSheet("安全可控清单");//写入数据

wirteSheet(dbm,sheet,w,id,quarter);

}

}

我这里页签是固定的名称

cd43686430b9d7c4945bdac4b924748b.png

可根据自己的需要根据参数来进行判断页签。如果多个页签的话 可以这样:

public voidcreateSheet(DBManager dbm,HSSFWorkbook w,Vector vt) throws Exception{

Hashtable temp= (Hashtable)vt.get(0);

String id= (String)temp.get("id");

String quarter= (String)temp.get("quarter");

System.out.println("DumpExcel.jsp id"+id+"quarter:"+quarter);//查询得到当前模板对应的页签

String sheets = "select a7 from a_templet_col_num where templet_id='"+id+"' group by a7 order by a7";

Vector sheetsVc=dbm.execut

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Apache POI库来导出Java中的数据到Excel文件中。下面是一个简单的示例代码,演示如何将数据导出Excel文件中: ```java import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelExporter { public static void main(String[] args) throws IOException { // 创建一个工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建一个工作表对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建数据 List<List<String>> data = new ArrayList<>(); List<String> row1 = new ArrayList<>(); row1.add("姓名"); row1.add("年龄"); row1.add("性别"); data.add(row1); List<String> row2 = new ArrayList<>(); row2.add("张三"); row2.add("22"); row2.add("男"); data.add(row2); List<String> row3 = new ArrayList<>(); row3.add("李四"); row3.add("25"); row3.add("女"); data.add(row3); // 将数据写入表格 for(int i = 0; i < data.size(); i++) { Row row = sheet.createRow(i); List<String> rowData = data.get(i); for(int j = 0; j < rowData.size(); j++) { Cell cell = row.createCell(j); cell.setCellValue(rowData.get(j)); } } // 将工作簿写入文件 FileOutputStream outputStream = new FileOutputStream("output.xlsx"); workbook.write(outputStream); workbook.close(); outputStream.close(); } } ``` 以上代码将创建一个Excel工作簿,添加一个名为“Sheet1”的工作表,并将数据写入该工作表。最后,将工作簿写入名为“output.xlsx”的文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值