导入导出功能需求是这样的:按照条件查询出结果,然后将这些结果以excel形式导出;修改字段信息后(主键不允许修改)导入即覆盖原字段信息,完成更新。本例是借助poi完成的,将poi-3.9.jar导入到WEB-INF下的lib的文件夹,与此一起导入的还有commons-io-1.3.2.jar,commons-fileupload-1.2.1.jar,用于io输入和文件上传。
一、导出
功能:选择时间条件——导出——选择保存路径——保存,如下图所示
实现过程:写一个创建excel的方法,先创建一个excel文件,创建好工作表,表头;然后将数据内容填充到里面,数据是根据查询的结果而来;最后保存excel文件至服务器的一个临时位置(每次会覆盖),用户下载的时候从这个位置下载到客户端。
Excel创建代码:
public static void createExcel(List<Sku> list) throws SQLException{
// 创建一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个工作表
HSSFSheet sheet = workbook.createSheet("sku表");
// 添加表头行
HSSFRow hssfRow = sheet.createRow(0);
// 设置单元格格式居中
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 添加表头内容
HSSFCell headCell = hssfRow.createCell(0);
headCell.setCellValue("服务SKU");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(1);
headCell.setCellValue("内外部判别");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(2);
headCell.setCellValue("产品名称");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(3);
headCell.setCellValue("规格型号");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(4);
headCell.setCellValue("发票名称");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(5);
headCell.setCellValue("状态");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(6);
headCell.setCellValue("生命周期");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(7);
headCell.setCellValue("生成时间");
headCell.setCellStyle(cellStyle);
// 添加数据内容
for (int i = 0; i < list.size(); i++) {
hssfRow = sheet.createRow((int) i + 1);
Sku student = list.get(i);
// 创建单元格,并设置值
HSSFCell cell = hssf