本文主要是介绍使用POI读取/创建Execl(.xlsx)文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用POI读取/创建Execl(.xlsx)文件
最近项目中用到了解析Execl表格的功能,在网上百度了一下自己写了一个小Demo。由于项目中使用的是Execl2007,就是后缀为.xlsx的,所以只研究了解析和创建Execl2007的文件,解析Execl2007和Execl2003有一定的区别,大家在解析的时候要注意。
一下是Demo中用到的jar包(可能有几个包用不到,懒得删了):
其他的我就不过多的介绍了,每个方法的具体用法可以参考官方手册,直接上代码:
poi文档和jar包下载地址:http://poi.apache.org/download.html
1 package com.lym.test;2 3 import java.io.FileInputStream;4 import java.io.FileOutputStream;5 import java.io.InputStream;6 import java.io.OutputStream;7 8 import org.apache.poi.hssf.util.HSSFColor;9 import org.apache.poi.ss.usermodel.Cell;10 import org.apache.poi.ss.usermodel.CellStyle;11 import org.apache.poi.ss.usermodel.Font;12 import org.apache.poi.ss.usermodel.Row;13 import org.apache.poi.ss.usermodel.Workbook;14 import org.apache.poi.xssf.usermodel.XSSFSheet;15 import org.apache.poi.xssf.usermodel.XSSFWorkbook;16 17 /**18 * 使用POI读取/创建Execl(2007版.xlsx)文件19 * 20 * @author 刘彦民21 *22 */23 public class POIReaderExecl {24 25 public static void main(String[] args) throws Exception {26 27 readExeclFile();28 // createExeclFile();29 }30 31 /**32 * 创建Execl文件33 * 34 * @throws Exception35 */36 public static void createExeclFile() throws Exception {37 // 创建工作空间38 XSSFWorkbook wb = new XSSFWorkbook();39 // 创建工作表40 XSSFSheet sheet = wb.createSheet("testdata");41 // 创建标题行(第一行)42 Row row0 = sheet.createRow(0);43 // 创建列44 for (int i = 0; i < 11; i++) {45 Cell cell_1 = row0.createCell(i, Cell.CELL_TYPE_STRING);// 第一个参数:列数(从0开始),第二个参数:列类型46 // 设置单元格样式47 CellStyle style = getStyle(wb);48 cell_1.setCellStyle(style);49 cell_1.setCellValue("Hello Column" + i);50 // 设置自动调整大小51 sheet.autoSizeColumn(i);52 }53 for (int rowNum = 1; rowNum < 200; rowNum++) {54 Row row = sheet.createRow(rowNum);55 for (int i = 0; i < 11; i++) {56 Cell cell = row.createCell(i, Cell.CELL_TYPE_STRING);57 cell.setCellValue("cell(" + String.valueOf(rowNum + 1) +", "+ String.valueOf(i + 1) + ")");58 }59 }60 OutputStream out = new FileOutputStream("D://data.xlsx");61 wb.write(out);62 out.flush();63 out.close();64 }65 66 /**67 * 读取Execl文件68 * 69 * @throws Exception70 */71 public static void readExeclFile() throws Exception {72 // 创建输入流73 InputStream in = new FileInputStream("D://order.xlsx");74 // 创建工作空间75 XSSFWorkbook wb = new XSSFWorkbook(in);76 // 获取工作表77 XSSFSheet sheet = wb.getSheetAt(0);// 获取第一个工作表78 // 获取总行数79 int rowNums = sheet.getLastRowNum();80 // 获取总列数81 int colNums = sheet.getPhysicalNumberOfRows();82 // 工作行83 Row row = null;84 // 工作单元格85 Cell cell = null;86 87 System.out.println("总行数:" + rowNums);88 System.out.println("总列数:" + colNums);89 // 循环遍历每行的内容90 for (int i = 1; i <= rowNums; i++) {91 // 获取第i行的工作行,第0行是列头,所以从第1行开始92 row = sheet.getRow(i);93 // 获取每个单元格的值94 for (int j = 0; j < colNums; j++) {95 cell = row.getCell(j);96 cell.setCellType(Cell.CELL_TYPE_STRING);97 System.out.print(cell.toString() + " ");98 }99 System.out.println(); 100 } 101 } 102 103 /** 104 * 设置单元格样式 105 */ 106 public static CellStyle getStyle(Workbook workbook) { 107 108 CellStyle style = workbook.createCellStyle(); 109 style.setAlignment(CellStyle.ALIGN_CENTER); 110 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); 111 // 设置单元格字体 112 Font headerFont = workbook.createFont(); // 字体 113 headerFont.setFontHeightInPoints((short) 14); 114 headerFont.setColor(HSSFColor.RED.index); 115 headerFont.setFontName("宋体"); 116 style.setFont(headerFont); 117 style.setWrapText(true); 118 119 // 设置单元格边框及颜色 120 style.setBorderBottom((short) 1); 121 style.setBorderLeft((short) 1); 122 style.setBorderRight((short) 1); 123 style.setBorderTop((short) 1); 124 style.setWrapText(true); 125 return style; 126 } 127 128 }
读取order.xlsx文件的内容:
生成data.xlsx文件的内容:
这篇关于使用POI读取/创建Execl(.xlsx)文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!