解决方案
3
13
同楼上,后台调用JSP显示时调用的接口获取数据,然后使用POI导出为Excel,并控制单元格样式
一些参考代码
一些参考代码
/** * 创建组织架构导入结果文件 * * @param listMessage * @param fileName * @param succSheetName * @param failSheetName */ private void createImportResultFile(ArrayList<Message<String>> listMessage, String fileName, String succSheetName, String failSheetName) { boolean bCreateFile = createFile(fileName); // 创建文件 if (!bCreateFile) { logger.info("创建组织架构导入结果文件失败 fileName=" + fileName); return; } FileOutputStream fos = null; try { fos = new FileOutputStream(fileName); HSSFWorkbook workBook = new HSSFWorkbook(); // 表头的单元格个数目 int cellNumber = OrganizationConstants.GET_DEPARTMENT_IMPORT_RESULT_TABLE_HEADER().length; logger.info("填充导入数据成功excel开始"); // 创建成功导入数据sheet HSSFSheet succsheet = workBook.createSheet(succSheetName); // 填充成功导入sheet表头 createTableHeader(succsheet, getHeaderCellStyle(workBook), OrganizationConstants.GET_DEPARTMENT_IMPORT_RESULT_TABLE_HEADER(), OrganizationConstants.GET_DEPARTMENT_IMPORT_RESULT_TABLE_COLUMN_WIDTH(), cellNumber); // 填充成功导入sheet表内容 createImportResultTableRow(succsheet, getDataCellStyle(workBook), listMessage, true); logger.info("填充导入数据成功excel结束"); logger.info("填充导入数据失败excel开始"); // 创建导入失败数据sheet HSSFSheet failsheet = workBook.createSheet(failSheetName); // 填充导入失败sheet表头 createTableHeader(failsheet, getHeaderCellStyle(workBook), OrganizationConstants.GET_DEPARTMENT_IMPORT_RESULT_TABLE_HEADER(), OrganizationConstants.GET_DEPARTMENT_IMPORT_RESULT_TABLE_COLUMN_WIDTH(), cellNumber); // 填充导入失败sheet表内容 createImportResultTableRow(failsheet, getDataCellStyle(workBook), listMessage, false); logger.info("填充导入数据失败excel结束"); workBook.write(fos); } catch (Exception e) { e.printStackTrace(); logger.info("生成组织架构导入结果文件出错"); logger.info(e.getMessage()); } finally { try { fos.close(); } catch (Exception e) { logger.info("生成组织架构导入结果文件出错"); logger.info(e.getMessage()); } } } /** * 创建文件 * * @param fileName * @return */ public boolean createFile(String filePath) { try { // 文件所在目录不存在则创建 int find = filePath.lastIndexOf(File.separator); if (find != -1) { String path = filePath.substring(0, find); createFolder(path); } // 文件不存在则创建 File file = new File(filePath); if (!file.exists()) { return file.createNewFile(); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 创建表头 * * @param sheet * @param tableHeader * @param cellNumber */ public void createTableHeader(HSSFSheet sheet, HSSFCellStyle cellStyle, String[] tableHeader, int[] tableColumnWidth, int cellNumber) { HSSFRow headerRow = sheet.createRow(0); // 创建表头行 for (int i = 0; i < cellNumber; i++) { HSSFCell headerCell = headerRow.createCell(i); headerCell.setCellValue(tableHeader[i]); // excel表格值 headerCell.setCellStyle(cellStyle); // excel表格样式 sheet.setColumnWidth(i, 256 * tableColumnWidth[i]); // in units of // 1/256th of a // character // width } logger.info("表格头填充完毕"); } private void createImportResultTableRow(HSSFSheet sheet, HSSFCellStyle cellStyle, ArrayList<Message<String>> listMessage, boolean bSuccImport) { int rowIndex = 1; HSSFCell cell0, cell1, cell2; int nCount = listMessage.size(); for (int i = 0; i < nCount; i++) { Message<String> message = listMessage.get(i); if (bSuccImport == message.getSuccess()) { // 创建第rowIndex行 HSSFRow row = sheet.createRow(rowIndex); // 填充第rowIndex行 cell0 = row.createCell(0); int nRow = i + 1; cell0.setCellValue("" + nRow); cell0.setCellStyle(cellStyle); cell1 = row.createCell(1); cell1.setCellValue(message.getData()); cell1.setCellStyle(cellStyle); cell2 = row.createCell(2); cell2.setCellValue(message.getDescription()); cell2.setCellStyle(cellStyle); // logger.info("第" + rowIndex + "行填充完毕"); rowIndex++; } } logger.info("填充完毕"); }
6
你前端展示的数据都是在页面上面写死的吗?
3
数据哪儿来的其实不重要,你的难点应该是在于excel的导出,百度上面有很多例子
6
这叫POI了吧,导出导入成execl。
3
你解决了吗 本人现在任务和你 的一样 导出前台选中的数据。SSM框架 能给本人看看你怎么实现的吗 谢谢了
18
POI也是手动,怎么拆,怎么弄都由你本人弄,应该是导出里面最好的了