本文共 2675 字,大约阅读时间需要 8 分钟。
java读写Excel文件可以使用POI,当然还有其他第三方库,这篇文章暂时只记录poi的使用,其他库有机会再更新
Apache POI - the Java API for Microsoft Documents
Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。
POI对不同文档的操作需要导入不同的包
读取excel的xlxs文档则需要POI和poi-ooxml两个包
org.apache.poi poi 3.17 org.apache.poi poi-ooxml 3.17
注:这里两个包的版本号要一致
FileInputStream in=new FileInputStream(file);//这里的XSSFWorkbook对应.xlsx格式的文档XSSFWorkbook xssfWorkbook = new XSSFWorkbook(in);//获取工作表的个数int numberOfSheets = xssfWorkbook.getNumberOfSheets();//遍历工作表for (int i = 0; i < numberOfSheets; i++) { XSSFSheet sheet = xssfWorkbook.getSheetAt(i); System.out.println("====="+sheet.getSheetName()+"===="); //获取工作表第一行行号 int firstRowNum = sheet.getFirstRowNum(); if (firstRowNum<0){ continue; } //获取工作表最后一行行号 int lastRowNum = sheet.getLastRowNum(); if (lastRowNum
String sheet1Name="user";String sheet2Name="dep";String[] sheet1Title={ "id","name","age"};Object[][] data1={ { 1,"zhansan",23},{ 2,"lisi",21}};String[] sheet2Title={ "id","depName","tel"};Object[][] data2={ { 1,"sale","1234465"},{ 2,"dev","464665664"}};//先在内存中创建工作簿XSSFWorkbook workbook = new XSSFWorkbook();//创建工作表XSSFSheet sheet1 = workbook.createSheet(sheet1Name);//创建行XSSFRow row = sheet1.createRow(0);for (int i = 0; i < sheet1Title.length; i++) { //创建单元格,并设置单元格内容 row.createCell(i).setCellValue(sheet1Title[i]);}for (int i = 0; i < data1.length; i++) { XSSFRow row1 = sheet1.createRow(i + 1); for (int j = 0; j < data1[i].length; j++) { row1.createCell(j).setCellValue(String.valueOf(data1[i][j])); }}XSSFSheet sheet2 = workbook.createSheet(sheet2Name);row = sheet2.createRow(0);for (int i = 0; i < sheet2Title.length; i++) { row.createCell(i).setCellValue(sheet2Title[i]);}for (int i = 0; i < data2.length; i++) { XSSFRow row1 = sheet2.createRow(i + 1); for (int j = 0; j < data1[i].length; j++) { row1.createCell(j).setCellValue(String.valueOf(data2[i][j])); }}//定义文件和文件输出流File file=new File("data/excel/out.xlsx");FileOutputStream outputStream=new FileOutputStream(file);//将数据写入.xlsx文件中workbook.write(outputStream);
导入pom依赖的时候最好使用3.17版本,笔者试了其他几个版本,即便是版本号一致,也会出现异常
笔者测试时只测试了.xlsx
格式的文档,有博客说 xls
文档对应的类为HSSFWorkbook
,但是笔者并没有找到
读取小数时,有时候会把诸如0.3这样的数据读进去控制台打印为0.299999…,这属于正常现象,如果觉得不美观,可以使用DecimalFormat
格式化一下,具体方法如下
DecimalFormat decimalFormat=new DecimalFormat("0.00");String str = decimalFormat.format(0.0299999);//输出0.03
转载地址:http://tezdf.baihongyu.com/