** ## Java使用POI导出excel **
maven导入的poi得包
org.apache.poi
poi
3.12
2创建excel工作簿
Workbook wb = new HSSFWorkbook();
解释:该方法相当于新建了一个excel文件,HSSFWorkbook : excel的文档对象。
3创建第一个sheet(页),命名为 page1
Sheet sheet = wb.createSheet(“page1”);
解释:该方法相当于在excel文件里新建了一个工作页,HSSFSheet : excel文件的表单页
4// 在页sheet上,创建一行
Row row = sheet.createRow((short) 0);
// 在row行上创建一个方格
Cell cell = row.createCell(0);
5//设置方格的显示
cell.setCellValue(1);
6//在单元格中写入内容
row.createCell(1).setCellValue(“我在第一格”);
row.createCell(2).setCellValue(2.2);
row.createCell(3).setCellValue(true);
7//创建一个文件 命名为workbook.xls
FileOutputStream fileOut = new FileOutputStream(“workbook.xls”);// 把上面创建的工作簿输出到文件中
wb.write(fileOut);//关闭输出流
** ## Java使用POI导入excel **
1
org.apache.poi
poi
3.12
2//创建要读入的文件的输入流
InputStream inp = new FileInputStream(“workbook.xls”);
3//根据上述创建的输入流 创建工作簿对象
Workbook wb = new HSSFWorkbook(inp);
4//得到第一页 sheet
//页Sheet是从0开始索引的
Sheet sheet = wb.getSheetAt(0);
5//利用foreach循环 遍历sheet中的所有行
for (Row row : sheet) {
//遍历row中的所有方格
for (Cell cell : row) {
//输出方格中的内容,以空格间隔
System.out.print(cell.toString() + " ");
}
//每一个行输出之后换行
System.out.println();
}
小结:导入和导出的pox文件的dependency是相同的,不管是引入还是导出用一个这个就OK
示例代码:
首先创建一个po对象
package entity;
public class Student {
private int no;
private String name;
private int age;
private String grage;
public Student(int no, String name, int age, String grage) {
super();
this.no = no;
this.name = name;
this.age = age;
this.grage = grage;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGrage() {
return grage;
}
public void setGrage(String grage) {
this.grage = grage;
}
}
2实现导出的功能:
1 package demo;
2
3 import java.io.FileOutputStream;
4 import java.io.IOException;
5 import java.sql.SQLException;
6 import java.util.ArrayList;
7 import java.util.Date;
8 import java.util.List;
9
10 import org.apache.poi.hssf.usermodel.HSSFCell;
11 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
12 import org.apache.poi.hssf.usermodel.HSSFDataFormat;
13 import org.apache.poi.hssf.usermodel.HSSFRow;
14 import org.apache.poi.hssf.usermodel.HSSFSheet;
15 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
16 import org.apache.poi.hssf.util.Region;
17 import org.apache.poi.ss.usermodel.Font;
18
19 import entity.Student;
20
21 public class Export_demo {
22 public static void main(String[] args) {
23 export();
24 }
25
26 public static void export(){
27 List studens=new ArrayList();
28 for (int i = 1; i <=20; i++) {
29 Student s=new Student(i, “a”+i, 20+i-20, “三年级”);
30 studens.add(s);
31 }
32
33 HSSFWorkbook wb = new HSSFWorkbook();//创建一个excel文件
34 HSSFSheet sheet=wb.createSheet(“学生信息”);//创建一个工作薄
35 sheet.setColumnWidth((short)3, 20* 256); //—》设置单元格宽度,因为一个单元格宽度定了那么下面多有的单元格高度都确定了所以这个方法是sheet的
36 sheet.setColumnWidth((short)4, 20* 256); //—>第一个参数是指哪个单元格,第二个参数是单元格的宽度
37 sheet.setDefaultRowHeight((short)300); // ---->有得时候你想设置统一单元格的高度,就用这个方法
38 HSSFDataFormat format= wb.createDataFormat(); //—>单元格内容格式
39 HSSFRow row1 = sheet.createRow(0); //—>创建一行
40 // 四个参数分别是:起始行,起始列,结束行,结束列 (单个单元格)
41 sheet.addMergedRegion(new Region(0, (short) 0, 0, (short)5));//可以有合并的作用
42 HSSFCell cell1 = row1.createCell((short)0); //—>创建一个单元格
43 cell1.setCellValue(“学生信息总览”);
44
45
46 sheet.addMergedRegion(new Region(1, (short) 0, 1, (short)0));
47 HSSFRow row2= sheet.createRow(1); 创建第二列 标题
48 HSSFCell fen = row2.createCell((short)0); //—>创建一个单元格
49 fen.setCellValue("编号/属性 ");
50 HSSFCell no = row2.createCell((short)1); //—>创建一个单元格
51 no.setCellValue("姓名 ");
52 HSSFCell age = row2.createCell((short)2); //—>创建一个单元格
53 age.setCellValue("年龄 ");
54 HSSFCell grage = row2.createCell((short)3); //—>创建一个单元格
55 grage.setCellValue("年级 ");
56
57 for (int i = 0; i <studens .size(); i++) {
58 sheet.addMergedRegion(new Region(1+i+1, (short) 0, 1+i+1, (short)0));
59 HSSFRow rows= sheet.createRow(1+i+1); 创建第二列 标题
60 HSSFCell fens = rows.createCell((short)0); //—>创建一个单元格
61 fens.setCellValue(studens.get(i).getNo());
62 HSSFCell nos = rows.createCell((short)1); //—>创建一个单元格
63 nos.setCellValue(studens.get(i).getName());
64 HSSFCell ages = rows.createCell((short)2); //—>创建一个单元格
65 ages.setCellValue(studens.get(i).getAge());
66 HSSFCell grages = rows.createCell((short)3); //—>创建一个单元格
67 grages.setCellValue(studens.get(i).getGrage());
68 }
69 FileOutputStream fileOut = null;
70 try{
71 fileOut = new FileOutputStream(“d:\studens.xls”);
72 wb.write(fileOut);
73 //fileOut.close();
74 System.out.print(“OK”);
75 }catch(Exception e){
76 e.printStackTrace();
77 }
78 finally{
79 if(fileOut != null){
80 try {
81 fileOut.close();
82 } catch (IOException e) {
83 // TODO Auto-generated catch block
84 e.printStackTrace();
85 }
86 }
87 }
88 }
89 }
导入Excel步骤:
org.apache.poi
poi
3.12
//创建要读入的文件的输入流
InputStream inp = new FileInputStream(“workbook.xls”);
//根据上述创建的输入流 创建工作簿对象
Workbook wb = new HSSFWorkbook(inp);
//得到第一页 sheet
//页Sheet是从0开始索引的
Sheet sheet = wb.getSheetAt(0);
//利用foreach循环 遍历sheet中的所有行
for (Row row : sheet) {
//遍历row中的所有方格
for (Cell cell : row) {
//输出方格中的内容,以空格间隔
System.out.print(cell.toString() + " ");
}
//每一个行输出之后换行
System.out.println();
}
导入Excel示例代码:
public List loadScoreInfo(String xlsPath) throws IOException{
List temp = new ArrayList();
FileInputStream fileIn = new FileInputStream(xlsPath);
//根据指定的文件输入流导入Excel从而产生Workbook对象
Workbook wb0 = new HSSFWorkbook(fileIn);
//获取Excel文档中的第一个表单
Sheet sht0 = wb0.getSheetAt(0);
//对Sheet中的每一行进行迭代
for (Row r : sht0) {
//如果当前行的行号(从0开始)未达到2(第三行)则从新循环
If(r.getRowNum()<1){
continue;
}
//创建实体类
ScoreInfo info=new ScoreInfo();
//取出当前行第1个单元格数据,并封装在info实体stuName属性上
info.setStuName(r.getCell(0).getStringCellValue());
info.setClassName(r.getCell(1).getStringCellValue());
info.setRscore(r.getCell(2).getNumericCellValue());
info.setLscore(r.getCell(3).getNumericCellValue());
temp.add(info);
}
fileIn.close();
return temp;
}
复制代码