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();