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>

&nbsp; <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);

 }

posted on 2017-12-20 14:20  青葙  阅读(450)  评论(1)    收藏  举报