java利用poi操作excel

来源:互联网 发布:60智能网络电视机价格 编辑:程序博客网 时间:2024/06/05 08:42

需依赖poi的jar包


//1、创建workbook,对应一个excelHSSFWorkbook wb = new HSSFWorkbook();//1.5、生成excel中可能用到的单元格样式//首先创建字体样式HSSFFont font = wb.createFont();//创建字体样式font.setFontName("宋体");//使用宋体font.setFontHeightInPoints((short) 10);//字体大小font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗//然后创建单元格样式styleHSSFCellStyle style1 = wb.createCellStyle();style1.setFont(font);//将字体注入style1.setWrapText(true);// 自动换行style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中    style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中style1.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());// 设置单元格的背景颜色style1.setFillPattern(CellStyle.SOLID_FOREGROUND);style1.setBorderTop((short) 1);// 边框的大小style1.setBorderBottom((short) 1);style1.setBorderLeft((short) 1);style1.setBorderRight((short) 1);//2、生成一个sheet,对应excel的sheet,参数为excel中sheet显示的名字HSSFSheet sheet = wb.createSheet("采集对象一致率");//3、设置sheet中每列的宽度,第一个参数为第几列,0为第一列;第二个参数为列的宽度,可以设置为0。//Test中有三个属性,因此这里设置三列,第0列设置宽度为0,第1~3列用以存放数据sheet.setColumnWidth(0, 0);sheet.setColumnWidth(1, 20*256);sheet.setColumnWidth(2, 20*256);sheet.setColumnWidth(3, 20*256);//4、生成sheet中一行,从0开始HSSFRow row = sheet.createRow(0);row.setHeight((short) 800);// 设定行的高度//5、创建row中的单元格,从0开始HSSFCell cell = row.createCell(0);//我们第一列设置宽度为0,不会显示,因此第0个单元格不需要设置样式cell = row.createCell(1);//从第1个单元格开始,设置每个单元格样式cell.setCellValue("x");//设置单元格中内容cell.setCellStyle(style1);//设置单元格样式cell = row.createCell(2);//第二个单元格cell.setCellValue("y");cell.setCellStyle(style1);cell = row.createCell(3);//第三个单元格cell.setCellValue("value");cell.setCellStyle(style1);//6、输入数据for(int i = 1; i <= list.size(); i++){cell = row.createCell(i);    ……//操作同第5步,通过setCellValue(list.get(i-1).getX())注入数据    ……}//7、如果需要单元格合并,有两种方式1、sheet.addMergedRegion(new Region(1,(short)1,1,(short)11));//参数为(第一行,最后一行,第一列,最后一列)        2、sheet.addMergedRegion(new CellRangeAddress(2, 3, 1, 1));//参数为(第一行,最后一行,第一列,最后一列)//8、输入excelFileOutputStream os = new FileOutputStream(path+"test.xls");wb.write(os);os.close();5、执行完上述操作,excel已经生成在服务器的path目录下了,文件名为test。6、将文件发送至客户端。注意:在ie浏览器下,如果采用location.href='/ServletDownload.do';方式下载,不能在servlet中使用response.getWriter();输出,而应该用response.getOutputStream();否则存在下载后的excel直接在浏览器上打开,而不是指定文件路径后下载。其他浏览器未测试过。服务端代码1)、设置响应的头文件,会自动识别文件内容response.setContentType("multipart/form-data");2)、设置Content-Dispositionresponse.setHeader("Content-Disposition", "attachment;filename=test.xls");3)、输出流OutputStream out = response.getOutputStream();4)、获取服务端生成的excel文件,这里的path等于4.8中的pathInputStream in = new FileInputStream(new File(path));5)、输出文件int b;while((b=in.read())!=-1){    out.write(b);}in.close();out.close();客户端代码location.href='/ServletDownload';