博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POI的使用
阅读量:3964 次
发布时间:2019-05-24

本文共 3570 字,大约阅读时间需要 11 分钟。

1.依赖

org.apache.poi
poi
4.1.0

2. 基本使用

//1. 在内存中创建一个excel文件   工作薄HSSFWorkbook book = new HSSFWorkbook();//2. 通过book创建SheetHSSFSheet sheet03 = book.createSheet("sheet03");//3. 通过sheet创建rowHSSFRow row = sheet03.createRow(0);//第一行//4. 通过row 创建 cellHSSFCell cell = row.createCell(0);//第一列//5. 在cell中存值cell.setCellValue("helloworld~~~");sheet03.autoSizeColumn(0);//第一列宽度自适应// 存储工作薄book.write(new File("d:\\test\\test.xls"));book.close();
// 读取工作薄HSSFWorkbook book = new HSSFWorkbook(new FileInputStream("d:\\test\\abc.xls"));// 读取 sheetHSSFSheet sheet = book.getSheet("sysUsers2");// 获得 row迭代器Iterator
rows = sheet.rowIterator();while(rows.hasNext()){
// 遍历所有行 Row row = rows.next(); // 获得cell迭代器 Iterator
cells = row.cellIterator(); while(cells.hasNext()){
//遍历当前行所有cell Cell cell = cells.next(); String value = cell.getStringCellValue();//获得cell值 System.out.print(value+"\t"); } System.out.println();}

3. 样式定制

//样式 ,可以为每个cell追加样式HSSFCellStyle style = book.createCellStyle();style.setBorderTop(BorderStyle.THIN); // 上下左右的边框style.setBorderBottom(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);style.setAlignment(HorizontalAlignment.CENTER); // 水平居中style.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中Font font = book.createFont();//字体font.setBold(true); // 粗体font.setItalic(true);//斜体font.setUnderline(Font.U_SINGLE);//下划线font.setStrikeout(true);//删除线font.setColor(IndexedColors.RED.getIndex()); //字体颜色font.setFontHeightInPoints((short)20);//字号:20号字体style.setFont(font);// 设置字体style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());//背景色style.setFillPattern(FillPatternType.SOLID_FOREGROUND);//背景色//追加样式cell.setCellStyle(style);

4.工具类

// 将任何类型的数据集合,写出到xls中//                        数据                     sheet名                 响应                文件名public static void write(List data, String sheetName,HttpServletResponse response,String fileName)     throws NoSuchFieldException, IllegalAccessException, IOException {
//1.在内存中创建一个excel文件 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); //2.创建工作簿 HSSFSheet sheet = hssfWorkbook.createSheet(sheetName); //3.建立表头 // 获取数据的所有 属性 Field[] fields = data.get(0).getClass().getDeclaredFields(); // 创建表头行 HSSFRow titlerRow = sheet.createRow(0); // 在表头行中 为数据的每个属性 创建一个cell for (int i = 0; i < fields.length; i++) {
HSSFCell cell = titlerRow.createCell(i); cell.setCellValue(fields[i].getName()); } // 4. 遍历数据 for (Object d : data) {
// 新建数据行 int lastRowNum = sheet.getLastRowNum();//当前的最后一行的行号 HSSFRow row = sheet.createRow(lastRowNum+1); for (int i = 0; i < fields.length; i++) {
HSSFCell cell = row.createCell(i); // 获取当前 数据中的属性值 Field f = fields[i];//获取属性 System.out.println("Field name:"+f.getName()); f.setAccessible(true);//此private属性允许访问 String cellValue = String.valueOf(f.get(d)); cell.setCellValue(cellValue); } } // 在定义好内容后,最后根据内容做每列的宽度自适应 for (int i = 0; i < fields.length; i++) {
sheet.autoSizeColumn(i); } //写出 String finalFileName = new String(fileName.getBytes(Charset.forName("utf-8")),"iso-8859-1"); response.setHeader("content-disposition","attachment;filename="+finalFileName); hssfWorkbook.write(response.getOutputStream()); hssfWorkbook.close(); response.getOutputStream().close();}

转载地址:http://avgzi.baihongyu.com/

你可能感兴趣的文章
[转载][转帖]Hibernate与Sleep的区别
查看>>
Linux系统的默认编码设置
查看>>
Linux系统调用
查看>>
Linux 信号signal处理机制
查看>>
Linux 信号signal处理函数
查看>>
perror简介
查看>>
linux的system () 函数详解
查看>>
在shell脚本的第一行中,必须写#!/bin/bash
查看>>
一句话##错误 'ASP 0116' 丢失脚本关闭分隔符
查看>>
文件上传漏洞之.htaccess
查看>>
常见网络安全设备默认口令
查看>>
VirtualBox虚拟机网络配置
查看>>
oracle vm virtualbox虚拟机下,CentOS7系统网络配置
查看>>
解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法
查看>>
wdcpv3升级到v3.2后,多PHP版本共存的安装方法
查看>>
PHP统计当前网站的访问人数,访问信息,被多少次访问。
查看>>
Windows10远程报错CredSSP加密oracle修正
查看>>
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>