使用poi进行数据的导出Demo
Posted qingmuchuanqi48
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用poi进行数据的导出Demo相关的知识,希望对你有一定的参考价值。
这是本人在项目中遇到了一个导出数据时,如果该条数据中包含汉字,就会出现excel单元格的大小与期望的样式不一样,也是查找了半天,也没有发现哪里出的问题.
现将一个小Demo奉献在这里,可以在遇到使用poi导出数据时,可以用来进行参考.
使用的是Springboot+poi
引入的依赖就只有poi的依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.16</version> </dependency>
编写的测试类为:
package exercise.demo; import org.apache.poi.hssf.usermodel.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.FileOutputStream; @RunWith(SpringRunner.class) @SpringBootTest public class DemoApplicationTests @Test public void excelUtils() /** * @see <a href="http://poi.apache.org/hssf/quick-guide.html#NewWorkbook">For more</a> */ // 创建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称 HSSFSheet sheet = workbook.createSheet(); //HSSFSheet sheet = workbook.createSheet("SheetName"); // 用于格式化单元格的数据 HSSFDataFormat format = workbook.createDataFormat(); // 创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算. HSSFRow row = sheet.createRow((short) 1); // 设置字体 HSSFFont font = workbook.createFont(); font.setFontHeightInPoints((short) 20); //字体高度 font.setColor(HSSFFont.COLOR_RED); //字体颜色 font.setFontName("黑体"); //字体 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度 font.setItalic(true); //是否使用斜体 // font.setStrikeout(true); //是否使用划线 // 设置单元格类型 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFont(font); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平布局:居中 cellStyle.setWrapText(true); // 添加单元格注释 // 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器. HSSFPatriarch patr = sheet.createDrawingPatriarch(); // 定义注释的大小和位置,详见文档 HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 6, 5)); // 设置注释内容 comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); // 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容. comment.setAuthor("Xuys."); // // 创建单元格 HSSFCell cell = row.createCell((short) 1); // HSSFRichTextString hssfString = new HSSFRichTextString("Hello World!"); // cell.setCellValue(hssfString);//设置单元格内容 // cell.setCellStyle(cellStyle);//设置单元格样式 // cell.setCellType(HSSFCell.CELL_TYPE_STRING);//指定单元格格式:数值、公式或字符串 // cell.setCellComment(comment);//添加注释 // // //格式化数据 // row = sheet.createRow((short) 2); // cell = row.createCell((short) 2); // cell.setCellValue(11111.25); // cellStyle = workbook.createCellStyle(); // cellStyle.setDataFormat(format.getFormat("0.0")); // cell.setCellStyle(cellStyle); // // row = sheet.createRow((short) 3); // cell = row.createCell((short) 3); // cell.setCellValue(9736279.073); // cellStyle = workbook.createCellStyle(); // cellStyle.setDataFormat(format.getFormat("#,##0.0000")); // cell.setCellStyle(cellStyle);// sheet.autoSizeColumn((short)1); //调整第一列宽度 // sheet.autoSizeColumn((short)1); //调整第二列宽度 // sheet.autoSizeColumn((short)2); //调整第三列宽度 // sheet.autoSizeColumn((short)3); //调整第四列宽度 try FileOutputStream fileOut = new FileOutputStream("G:/3.xls"); workbook.write(fileOut); fileOut.close(); catch (Exception e) System.out.println(e.toString());
直接放在测试类中运行这段代码就会在指定的文件中出现这个Excel文件.
以上是关于使用poi进行数据的导出Demo的主要内容,如果未能解决你的问题,请参考以下文章