网站搭建哪里找方便,seo怎么去优化,网站备案能查到什么东西,建网站合同前些天发现了一个巨牛的人工智能学习网站#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 格式的表格, 可以保存极大的数据量。 生成的临时文件存放在工程中记得删除。