Excel文件读取
此框架为springmvc freemarker搭建而成,
Excel有2003与2007版本不同,其使用方法也不同,此方法为通用方法
一、导出
前端为:
<form action="v_export.do" method="post" style="padding-top:5px;">
<input class="export" type="submit" value="<@s.m "excel.export"/>"/>
</form>
controller为:
@RequestMapping("/sensitivity/v_export.do")
public void exportCmsSensitivity(HttpServletRequest request, HttpServletResponse response, ModelMap model, Integer pageNo) {
// 获取List
List<XXX> list = manager.getList(false);
HSSFWorkbook wb = exportExcel(list);
try {
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", "attachment; filename=表格名字" + ".xls");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=30");
OutputStream out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private HSSFWorkbook exportExcel(List<CmsSensitivity> list) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Pojo");
HSSFCellStyle style = wb.createCellStyle();
sheet.autoSizeColumn(0);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//第一行 设置表头
HSSFRow row0 = sheet.createRow(0);
//第一列
HSSFCell cell0 = row0.createCell(0);
cell0.setCellStyle(style);
cell0.setCellValue("id");
//第二列
cell0 = row0.createCell(1);
cell0.setCellStyle(style);
cell0.setCellValue("名");
cell0 = row0.createCell(2);
cell0.setCellStyle(style);
cell0.setCellValue("名2");
//循环遍历list 将内容写进Excel表格中
int i=1;
for (C c : list) {
HSSFRow row = sheet.createRow(i);
HSSFCell cell = row.createCell(0);
cell.setCellStyle(style);
cell.setCellValue(c.getId());
cell = row.createCell(1);
cell.setCellStyle(style);
cell.setCellValue(c.getxx());
i++;
}
return wb;
}
二、导入
前端代码为
<form id="jvForm2">
<td >
<span style="position:relative">
<input type='text' id='tplZipText'/>
<input class="browse" type='button' value='<@s.m "global.browse"/>'/>
<input onchange="$('#tplZipText').val(this.value)" type="file" id="tplZip" name="file" class="file-button"/>
</span>
<input class="import" type="button" onclick="importTpl();" value="<@s.m "template.import"/>"/>
</td>
</form>
js:
function importTpl() {
if($("#tplZip").val()=="") {
alert("<@s.m "template.error.pleaseSelectFile"/>");
return;
}
var form = document.getElementById("jvForm2");
form.action = "o_import.do";
form.encoding = "multipart/form-data";
form.method="POST";
form.submit();
}
@RequestMapping(value = "/。。/o_import.do")
public String importSubmit(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response, ModelMap model, Integer pageNo) throws IOException, InvalidFormatException {
Workbook workbook = WorkbookFactory.create(file.getInputStream());
// 读取第一章表格内容
Sheet sheet = workbook.getSheetAt(0);
// 定义 row、cell
Row row;
String search = null;
String replacement = null;
// 循环输出表格中的内容
for (int i = sheet.getFirstRowNum(); i < sheet .getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
C c = new C();
int j = row.getFirstCellNum();
// 通过 row.getCell(j).toString() 获取单元格内容,
if (j < row.getPhysicalNumberOfCells()) {
search = row.getCell(j).toString();
}
j++;
if (j < row.getPhysicalNumberOfCells()) {
replacement = row.getCell(j).toString();
}
c.setXX(search);
c.setXX2(S2);
}
return list(request, model, pageNo);
}
浙公网安备 33010602011771号