我的简书:https://www.jianshu.com/u/c91e642c4d90
我的CSDN:http://blog.csdn.net/wo_ha
我的GitHub:https://github.com/chuanqiLjp
我的个人博客:https://chuanqiljp.github.io/
版权声明:转载需要在醒目注明出处
###序言:
- 这两天在弄一个股票数据分析,而Choice中导出的数据是Excel的表格,数据多达上百个,如果要手动的去操作的话,操作量非常大,所以就想着怎么用代码去实现,主要需求是:读取100多个相同格式的excel文件然后进行合并。翻译下就是Excel文件的读写。因此本篇就讲Excel读取和Excel的导出,一些常见的格式设置,增加单元格的边框,设置单元格的字体等,都是非常简单的使用,更详细的请参阅官方文档
1、下载需要的Jar包,点击立即下载
里面包含了五个POI操作的jar包,用于操作excel,支持2003、2007版本,有poi-3.14、poi-ooxml-3.14、poi-ooxml-schemas-3.14、poi-scratchpad-3.8、xmlbeans-2.6.0,由于CSDN最低分的限制,所以需要少许积分,没有积分的同学可以在文末留下你的邮箱,有空我会发给你
#2、导出Excel文件,代码中有大量注释,就不一一讲解了,读写流程:Workbook(工作簿)——>Sheet(工作表)——>Row(行)——>Cell(单元格)
- 2003-2007 版本的 工作簿,文件的后缀名为xls的文件可以单独使用 HSSFWorkbook workbook = new HSSFWorkbook()
- 2007 以上版本的 工作簿,文件的后缀名为Xlsx的文件可以单独使用 XSSFWorkbook workbook=new XSSFWorkbook();
- 下面对应的类加上对应的前缀HSSF或XSSF,而没有前缀的可以通用xls和xlsx的文件, 需要加前缀的类如:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell、HSSFFont、HSSFCellStyle、HSSFDataFormat、
1 | /** |
##3、读取Excel,通常来说是需要区分excel版本的,如2003-2007的版本文件后缀为xls,需要使用HSSFWorkbook,而2007+的版本文件后缀为xlsx,需要使用XSSFWorkbook,但是读取可以使用WorkbookFactory.create(file)
1 | public static void readExcel2(File excelFile) { |
##4、读取Excel的数据并转换为Java Bean的集合
1 | public static List<Student> readExcel(File excelFile) { |
读取结果1
2
3Student [id=0000000, name=name0, sex=true, age=10, score=750.0, date=Thu Jan 25 14:25:07 CST 2018]
...
Student [id=00000029, name=name29, sex=false, age=39, score=721.0, date=Thu Jan 25 14:25:07 CST 2018]
Student类很简单字段有1
2
3
4
5
6private String id;
private String name;
private boolean sex;// true = 男,
private int age;
private double score;
private Date date;
##5、测试代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17String sheetName="表1";
String []sheetHeads={"学号","姓名","性别","年龄","成绩","日期"};
List<Student> listContent=new ArrayList<Student>();
for (int i = 0; i < 30; i++) {
listContent.add(new Student("000000"+i, "name"+i, i%2==0?true:false, i+10, 750-i,new Date() ));
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("C:\\Users\\yuxue\\Desktop","student.xls"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Excel.writeExcel(sheetName, sheetHeads, listContent, fos);
List<Student> list = Excel.readExcel(new File("C:\\Users\\yuxue\\Desktop","student.xls"));
for (Student student : list) {
System.out.println(student);
}
我的CSDN博客:http://blog.csdn.net/wo_ha/article/details/79161616