做淘宝有没有店小秘类型的网站,泰州快速建站模板,e龙岩官网,西安网站搭建费用前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。
一、思路#xff1a;从数据库表中查出list #xff0c;封装到 HSSFWorkook 中#xff0c;再由HSSFWorkook 写出到 File 中,
用 res…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。
一、思路从数据库表中查出list 封装到 HSSFWorkook 中再由HSSFWorkook 写出到 File 中,
用 response 的 build 方法 实现下载、导出。 二、 实现代码
要加上注解 Produces 文本就写 text , 图片写 img ( 如果我没有记错的话) Path(/exportWWCollectReport)Produces(text/plain)GETOverridepublic Response exportWorkWeights(QueryParam(tableName) DefaultValue(工作权重统计报表) String tableName,QueryParam(startTime) String startTime,QueryParam(endTime) String endTime,QueryParam(employeeNo) String employeeNo,QueryParam(organizeId) String organizeId,QueryParam(employeeName) String employeeName,QueryParam(position) String position,QueryParam(jobTypeId) String jobTypeId,QueryParam(projectId) String projectId) {try{return workWeightCollectService.exportWorkWeights(tableName, startTime, endTime, employeeNo,organizeId, employeeName, position, jobTypeId, projectId);}catch (Exception ex){logger.debug(工作权重统计报表导出失败,ex.getMessage());return null;}} 要导这个包下的 response : import javax.ws.rs.core.Response; Overridepublic Response exportWorkWeights(String tableName, String startTime, String endTime, String employeeNo,String organizeId, String employeeName, String position, String jobTypeId, String projectId) throws Exception {// 要导出的列表数据String sql getWorkWeightCollectReportSql( startTime, endTime, employeeNo,organizeId, employeeName, position, jobTypeId, projectId);ListObject wwList getResultList(sql);if (null wwList){return null;}ListListObject list new ArrayListListObject(); // list 是要导出的表数据WorkWeightDto ww null;String startT null;String endT null;WorkWeightDto wwdto new WorkWeightDto();for (Object ob : wwList) {Object[] obj (Object[])ob;ListObject dataList new ArrayListObject();startT String.valueOf(obj[0]) null ? :String.valueOf(obj[0]);endT String.valueOf(obj[1]) null ? : String.valueOf(obj[1]);dataList.add(startT 至 endT);dataList.add(String.valueOf(obj[2]) null ? :String.valueOf(obj[2])); // 工号dataList.add(String.valueOf(obj[10]) null ? :String.valueOf(obj[10])); // 中心String bu String.valueOf(obj[11]);wwdto setOrganizeBu(wwdto, bu);String ke String.valueOf(obj[12]);wwdto setOrganizeKe(wwdto,ke);String shi String.valueOf(obj[13]);if(shi.substring(shi.length()-2,shi.length()).contains(室)){wwdto.setShi(shi);}else {wwdto setOrganizeKe(wwdto, shi);}dataList.add(wwdto.getBu()); // 部dataList.add(wwdto.getKe()); // 科dataList.add(wwdto.getShi()); // 室dataList.add(String.valueOf(obj[3]) null ? :String.valueOf(obj[3])); //姓名dataList.add(String.valueOf(obj[8]) null ? :String.valueOf(obj[8])); // 职级dataList.add(String.valueOf(obj[5]) null ? :String.valueOf(obj[5])); // 工作类型dataList.add(String.valueOf(obj[7]) null ? :String.valueOf(obj[7])); // 项目dataList.add(String.valueOf(obj[9]) null ? :String.valueOf(obj[14])); // 工作任务dataList.add(String.valueOf(obj[9]) null ? :String.valueOf(obj[9])); // 比例list.add(dataList);}//表头String[] headers new String[]{所属周期,工号,中心,部门,科,室,姓名,职级,工作类型,项目,工作任务,比例};FileOutputStream fileOut null;try{HSSFWorkbook workbook ExportUtil.excelOut(headers, list);fileOut new FileOutputStream(tableName.xlsx);workbook.write(fileOut);// 以上是写入文件以下是下载文件File file new File(tableName.xlsx);Response.ResponseBuilder response Response.ok(file);response.header(Content-Disposition,attachment; filename new String((tableName.xlsx).getBytes(gbk), iso8859-1));return response.build();} catch (Exception e){e.printStackTrace();return null;}finally {fileOut.close();}} import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;import java.io.FileOutputStream;
import java.util.List;public class ExportUtil {public static HSSFWorkbook excelOut(String[] cloumName, ListListObject list){//声明一个工作簿HSSFWorkbook workbook new HSSFWorkbook();//生成一个表格HSSFSheet sheet workbook.createSheet();//设置表格默认列宽度为20个字符sheet.setDefaultColumnWidth(20);//生成一个样式用来设置标题样式HSSFCellStyle style workbook.createCellStyle();// 表头居中style.setAlignment(HorizontalAlignment.CENTER);//生成一个字体HSSFFont font workbook.createFont();font.setFontHeightInPoints((short) 12); // 字体高度font.setFontName( 黑体 ); // 字体//把字体应用到当前的样式style.setFont(font);// 生成并设置另一个样式,用于设置内容样式HSSFCellStyle style2 workbook.createCellStyle();style2.setAlignment(HorizontalAlignment.CENTER);// 生成另一个字体HSSFFont font2 workbook.createFont();font2.setFontName( 黑体 ); // 字体// 把字体应用到当前的样式style2.setFont(font2);HSSFRow row sheet.createRow(0);for(int i 0; i cloumName.length; i){//单元格HSSFCell cellHead row.createCell(i);cellHead.setCellStyle(style);HSSFRichTextString text new HSSFRichTextString(cloumName[i]);cellHead.setCellValue(text);}for (int i 0; i list.size(); i){row sheet.createRow(i 1);ListObject dataList list.get(i);for (int j 0; j dataList.size(); j) {// 表格内容样式设置HSSFCell cellHead row.createCell(j);cellHead.setCellStyle(style2);HSSFRichTextString text new HSSFRichTextString(String.valueOf(dataList.get(j)));// 为空if(text null || text.toString() ){cellHead.setCellValue();}/* // 整数,不为电话else if(ValidateUtils.isInteger(String.valueOf(text)) !(StringUtils.startsWith(String.valueOf(text),1) String.valueOf(text).length() 11)){cellHead.setCellValue(Integer.parseInt(String.valueOf(text)));}// 有小数、或为电话else if(ValidateUtils.isDouble(dataList.get(j).toString())){cellHead.setCellValue(Double.parseDouble(String.valueOf(text)));}*/// 字符串else{cellHead.setCellValue(String.valueOf(text));}}}return workbook;}
} 另 xlsx 格式的表格容量数据条数有上限大约是36000条数据。建议使用 csv 格式的表格, 可以保存极大的数据量。 生成的临时文件存放在工程中记得删除。