摘要:上一篇我们学习了通过poi读取excel里面的内容,那么在这篇文章中,我们将看到如何使用Apache POI示例在java中编写excel。Apache POI项目的任务是创建和维护Java api,用于根据Office Open XML标准(OOXML)和微软的OLE 2复合文档格式(OLE2)来操作各种文件格式。简而言之,您可以使用Java读写MS Excel文件。
关于Apache POI的一些基本知识:在java中读/写excel时,会遇到两个类
HSSF: 用于处理excel 2003或更早(.xls)的文件。一些具有HSSF前缀的类是HSSFWorkbook、HSSFSheet、HSSFRow和HSSFCell
SSF: 用于处理excel 2007或稍后(.xlsx)的文件。一些带有XSSF前缀的类是XSSFWorkbook、XSSFSheet、XSSFRow和XSSFCell
这里有一些你需要注意的类:
Workbook : 这是代表excel工作簿的高级类
Sheet : 这是表示excel表的高级类。
Row : 这是代表excel行的高级类。它有与行相关的方法
Cell: 这是代表单个excel单元的高级类。它有与cell相关的方法,例如:getDataType()。
项目结构:
Dependency:
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
使用poi编写excel文件:
1.创建一个空白工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
2.创建一张表并传递该表格的名称
XSSFSheet sheet = workbook.createSheet("Country");
3.创建行
Row row = sheet.createRow(rownum++);
4.创建单元格,设置它的值并将单元格添加到上面一行
Cell cell = row.createCell(cellnum++); if (obj instanceof String) { cell.setCellValue((String)obj); } else if (obj instanceof Double) { cell.setCellValue((Double)obj); } else if (obj instanceof Integer) { cell.setCellValue((Integer)obj); }
5.重复3和4,直到有数据
Java Program:
我们将编写一个名为“CountriesDetails.xlsx”的excel文件。创建WriteExcelMain.java如下
package com.micai.poi;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
/**
* 描述:How to write Excel files in java using Apache POI
* <p>
*
* @author: 赵新国
* @date: 2018/6/7 15:48
*/
public class WriteExcelMain {
public static void main(String [] args) throws IOException {
writeFileUsingPOI();
}
public static void writeFileUsingPOI() throws IOException {
// create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
// create a blank sheet
XSSFSheet sheet = workbook.createSheet("Country");
ArrayList<Object[]> data = new ArrayList<Object[]>();
data.add(new String[]{"Country","Capital","Population"});
data.add(new Object[]{"India","Delhi",10000});
data.add(new Object[]{"France","Paris",40000});
data.add(new Object[]{"Germany","Berlin",20000});
data.add(new Object[]{"England","London",30000});
// Iterate over data and write to sheet
int rownum = 0;
for (Object[] countries : data) {
Row row = sheet.createRow(rownum++);
int cellnum = 0;
for (Object obj : countries) {
Cell cell = row.createCell(cellnum++);
if (obj instanceof String) {
cell.setCellValue((String)obj);
} else if (obj instanceof Double) {
cell.setCellValue((Double)obj);
} else if (obj instanceof Integer) {
cell.setCellValue((Integer)obj);
}
}
}
try {
// write the workbook in file system
FileOutputStream outputStream = new FileOutputStream(new File("src/main/resources/CountriesDetails.xlsx"));
workbook.write(outputStream);
outputStream.close();
System.out.println("CountriesDetails.xlsx has been created successfully");
} catch (Exception e) {
e.printStackTrace();
} finally {
workbook.close();
}
}
}
当您运行在程序之上时,您将得到以下输出:现在让我们看一下CountriesDetails.xlsx的内容: