java 操作Excel表格

对于Excel表格的解析、生成,java在 org.apache.poi 包中已经封装好了,使用比较简单。

解析Excel:

首先将File文件转成InputStream

InputStream in = file.getInputStream();

然后创建表格对象,如果是2003版本的使用  HSSFWorkbook,2007以上的使用 XSSFWorkbook

 HSSFWorkbook workbook = new HSSFWorkbook(in);// 创建对Excel工作薄文件的引用

接下来获取工作表

HSSFSheet sheet = workbook.getSheetAt(0);// 引用第一张工作表

获取行

HSSFRow row = sheet.getRow(0);//获取第一行

获取单元格

HSSFCell cell=row.getCell(0)//获取第一个单元格

获取单元格的内容

String str=cell.getStringCellValue();//文本
Double money=cell.getNumericCellValue();//数字

可以这样封装一下

 private static String getStringFormCell(HSSFCell cell) {
        try {
            return cell.getStringCellValue();
        } catch (java.lang.IllegalStateException ex) {
            return String.valueOf(cell.getNumericCellValue());
        }
    }

最后通过遍历行、列就能实现解析了

生成Excel:

生成excel要注意网页前端用ajax请求不能接收文件流,可以直接用超链接的方式直接GET调用后台方法,js的写法就是

window.location.href=XXXXX //请求地址

创建excel

HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
HSSFSheet sheet = hssfWorkbook.createSheet(sheetName);//创建工作表

创建行

HSSFRow row = sheet.createRow(rowIndex);

创建一个单元格的格式(可选)

HSSFCellStyle style = hssfWorkbook.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

创建一个单元格并设置格式、值

 HSSFCell cell = row.createCell(cellIndex);
 cell.setCellValue(cellValue);
 cell.setCellStyle(style);

最后设置请求参数并输出文件

response.setContentType("application/msexcel;charset=UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + new String((fileName+ ".xls").getBytes("GBK"), "ISO8859_1"));
OutputStream out = response.getOutputStream();
hssfWorkbook.write(out);
out.flush();
out.close();

 

posted @ 2017-11-02 17:52  沉舟侧畔千帆过同学  阅读(475)  评论(0编辑  收藏  举报
我的个人博客\ (•◡•) /