使用java来操作excel需要用到一个开源工具,Apache下的poi相关jar包。让我们可以很轻松的方便的操作excel文件。
首先,到官网把poi下载下来。官网地址
下载完成后,进行解压。把所有jar包导入到项目工程当中。
上面准备工作完成,就可以使用我们的JAVA来将数据导入到Excel表格中。
poi的结构
- HSSF - 提供读写Microsoft Excel XLS格式档案的功能
- XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能(2007版以后的Excel)
- XSSFWorkbook:工作簿
- XSSFSheet:工作表
- XSSFRow:行
- XSSFCell:单元格
在工作中我们创建的Excel的顺序是这样的,首先新建一个Excel文件,然后在sheet也中制作表格的表头,再填入数据,也就是Excel文件>sheet页>行>列的顺序所以在代码中实现的过程也是如此,比如XSSFWorkbook xssfWorkbook = new XSSFWorkbook();可以理解为创建了一个Excel文件xssfWorkbook.createSheet("persion");可以理解为创建了一个sheet页,XSSFRow row = sheet.createRow(0);新建了一个表格行row.createCell(0).setCellValue("姓名");第一行的第一列设置为姓名,也就是表头第一个表格为姓名row.createCell(1).setCellValue("城市");第一行的第二列设置为城市,表头第二个表格为城市row.createCell(2).setCellValue("手机号");第一行的第三列为手机号,表头的第三列为手机号
创建一个Person类,代码如下
public class Person {private String name;//名称private String city;//城市private String cellPhone;//手机号码public Person(){}public Person(String name, String city, String cellPhone) {this.name = name;this.city = city;this.cellPhone = cellPhone;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getCellPhone() {return cellPhone;}public void setCellPhone(String cellPhone) {this.cellPhone = cellPhone;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", city='" + city + '\'' +", cellPhone='" + cellPhone + '\'' +'}';}
}
写一个测试类,将数据导入到Excel表格中。代码如下:
import org.apache.poi.xssf.usermodel.XSSFRow;
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;
import java.util.List;public class ExcelWriter {public static void main(String[] args) throws IOException {List<Person> list = new ArrayList<>();list.add(new Person("张三","成都","12345678910"));list.add(new Person("李四","北京","6666666666"));list.add(new Person("王麻子","上海","8888888888"));ExcelWriter excelWriter = new ExcelWriter();excelWriter.fillExcel(list,new File("persion.xlsx"));}/*** 填充Excel* @param data 用户数据* @param destFile 目标文件*/public void fillExcel(List<Person> data, File destFile) throws IOException {XSSFWorkbook xssfWorkbook = new XSSFWorkbook();XSSFSheet sheet = xssfWorkbook.createSheet("用户");XSSFRow row = sheet.createRow(0);row.createCell(0).setCellValue("名称");row.createCell(1).setCellValue("城市");row.createCell(2).setCellValue("手机号码");for(int i=0;i<data.size();i++){Person person = data.get(i);System.out.println(person);XSSFRow r = sheet.createRow(i+1);r.createCell(0).setCellValue(person.getName());r.createCell(1).setCellValue(person.getCity());r.createCell(2).setCellValue(person.getCellPhone());}FileOutputStream fileOutputStream = new FileOutputStream(destFile);xssfWorkbook.write(fileOutputStream);fileOutputStream.close();xssfWorkbook.close();}
}
运行效果
现在我们来读入Excel表格里的内容
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.FileInputStream;
import java.io.IOException;
import java.util.Iterator;public class ExcelReader {public static void main(String[] args) throws IOException {ExcelReader excelReader = new ExcelReader();excelReader.readExcel(new File("persion.xlsx"));}/*** 读取Excel* @param sourceFile 源文件对象*/public void readExcel(File sourceFile) throws IOException {XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream((sourceFile)));XSSFSheet sheetAt = xssfWorkbook.getSheetAt(0);Iterator<Row> rowIterator = sheetAt.rowIterator();while (rowIterator.hasNext()){Row row = rowIterator.next();System.out.println(row.getCell(0).getStringCellValue()+" "+row.getCell(1).getStringCellValue()+" "+row.getCell(2).getStringCellValue());}xssfWorkbook.close();}
}
运行效果如下: