表格操作
2021/6/20 23:58:50
本文主要是介绍表格操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
表格操作
1.为什么要学习
公司开发中 特别是开发 crm erp OA系统的时候 会有一个需求 导入和导出报表 (表格)
2. 解决方案
- jxl : 只能对Excel进行操作,属于比较老的框架,已经停止更新和维护(已经废弃)
- poi: 现在比较主流 可以操作不同版本的表格和word
3.版本说明
3.1 Excel2003
Excel2003是一个特有的二进制格式,其核心结构是复合文档类型的结构,存储数据量较小
3.2 Excel2007
Excel2007 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小,操作效率更高
4.poi的使用(表格操作)
4.1 生成表格
4.1.1 环境准备
新建maven基本工程 添加poi的坐标
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
4.1.2 最基本的生成表格
@Test public void fun() throws Exception { //创建工作簿 Workbook workbook = new XSSFWorkbook(); //创建文件输出流 FileOutputStream out = new FileOutputStream("E:\\demo.xlsx"); //把工作簿输出本地 workbook.write(out); //关闭资源 out.close(); workbook.close(); }
类的说明
- HSSF操作Microsoft Excel XLS格式
- XSSF操作Microsoft Excel OOXML XLSX格式。
- HWPF操作Microsoft Word DOC格式
- HSLF操作Microsoft PowerPoint格式
4.1.3 操作表格的Sheet
@Test public void fun1() throws Exception { Workbook workbook = new XSSFWorkbook(); //创建sheet并且指定 sheet的名字 workbook.createSheet("财务管理"); FileOutputStream out = new FileOutputStream("E:\\demo1.xlsx"); workbook.write(out); out.close(); workbook.close(); }
4.1.4 操作表格的行
@Test public void fun2() throws Exception { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("财务管理"); //通过该Sheet创建row //参数表示 行的索引 从0开始 Row row = sheet.createRow(0); FileOutputStream out = new FileOutputStream("E:\\demo1.xlsx"); workbook.write(out); out.close(); workbook.close(); }
4.1.5 操作表格的单元格
@Test public void fun3() throws Exception { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("财务报表"); Row row = sheet.createRow(0); //单元格 通过row创建 //参数表示索引 表示这一行的第几个单元格 索引从0开始 Cell cell = row.createCell(2); //给单元格写文字 cell.setCellValue("辉哥真帅"); FileOutputStream out = new FileOutputStream("E:\\demo3.xlsx"); workbook.write(out); out.close(); workbook.close(); }
4.1.6 操作样式
@Test public void fun4() throws Exception { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("辉哥很帅"); Row row = sheet.createRow(3); //创建Cell的样式 通过工作簿创建样式 CellStyle cellStyle = workbook.createCellStyle(); //获取设置文字样式 Font font = workbook.createFont(); //设置文字加粗 font.setBold(true); //设置文字大小 font.setFontHeightInPoints((short)30); cellStyle.setFont(font); //设置上边框 cellStyle.setBorderTop(BorderStyle.DASHED); //设置下边框 cellStyle.setBorderBottom(BorderStyle.DASHED); //设置左边框 cellStyle.setBorderLeft(BorderStyle.DASHED); //设置右边框 cellStyle.setBorderRight(BorderStyle.DASHED); //设置文字水平居中 cellStyle.setAlignment(HorizontalAlignment.CENTER); //设置文字垂直居中 cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //设置行高 row.setHeightInPoints(40); //设置单元格的宽度 //第一个参数 表示设置哪个单元格 表示索引 第二个表示宽度 sheet.setColumnWidth(3,50*256); //创建单元格 Cell cell = row.createCell(3); //给单元格设置值 cell.setCellValue("辉哥很帅"); //给这个单元格设置这个样式 cell.setCellStyle(cellStyle); FileOutputStream out = new FileOutputStream("E:\\aaa4.xlsx"); workbook.write(out); out.close(); workbook.close(); }
4.2 读取表格
新建一个xlsl文件 填写信息
/** * 读取表格 */ public class POIDemo2 { @Test public void fun() throws Exception { //加载xlsx文件 Workbook workbook = new XSSFWorkbook("E:\\person.xlsx"); //通过工作簿找到sheet Sheet sheet = workbook.getSheetAt(0); //获取一共多少行 int maxRow = sheet.getLastRowNum(); for (int i = 0; i <= maxRow; i++) { //获得具体每一行 Row row = sheet.getRow(i); //获取这一行 有多少个单元格 int lastCellNum = row.getLastCellNum(); StringBuffer buffer = new StringBuffer(); //遍历这一行的所有单元格 for (int j = 0; j <= lastCellNum; j++) { //获取单元格 Cell cell = row.getCell(j); if (cell != null) { Object value = getValue(cell); buffer.append(value).append("--"); } } System.out.println(buffer.toString()); } } public Object getValue(Cell cell) { CellType cellTypeEnum = cell.getCellTypeEnum(); Object obj = null; switch (cellTypeEnum) { case STRING://字符串类型 obj = cell.getStringCellValue(); break; case BOOLEAN:// boolean类型 obj = cell.getBooleanCellValue(); break; case NUMERIC://数字和日期类型 if (DateUtil.isCellDateFormatted(cell)) { //如果是日期类型 obj = cell.getDateCellValue(); } else { //数字类型 obj = cell.getNumericCellValue(); DecimalFormat format = new DecimalFormat("#"); //修改小数点的问题 obj = format.format(obj); } break; case FORMULA://如果是公式 obj = cell.getCellFormula(); break; } return obj; } }
5.项目中的使用
引入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
这篇关于表格操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器