记录一次学习的过程,希望也可以了解到其它的学习方法,嘻嘻。
目录
一得到任务:
当我打开工作QQ群的时候,接收到了这样的一个任务:
组长真好啊(QAQ)
二打开度娘获取信息
从讨论中了解到,POI提供API给java程序对Microsoft Office格式档案进行读写操作。但是了解甚少啊,怎么办???度娘来帮忙呀!于是,打开google浏览器,百度搜索:
然后得到这样的信息介绍:
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 其中:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
找到了我需要的信息HSSF和XSSF,之后,看了简单的介绍。
三打开eclipse写小例子
每一次了解了这些基本知识之后,需要做什么???(阅读源码?额,这个难度太高了)我当然是打开eclipse准备练习这个例子。但,貌似还没有下载POI,于是,我又找到了度娘:”娘娘,告诉我官网的下载地址吧”,然后我就得到了这样的下载地址:
http://poi.apache.org/download.html#POI-4.1.2,进入之后就是这样的了。
但是,为了避免出现很多的错误,我又寻找安装教程:
然后,下载loading.....
四导入包创建简单实例训练
下载完,按照我一贯的做法导入之后,也可以去百度一下这个教程,这里提供:https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html,和https://www.cnblogs.com/ruber/p/10671079.html,这里提醒一下,如果只是单导入jar有可能报错,还需要导入解压后的bin文件夹下的jar。
一切导入之后,开始写两个最简单的例子,来看看,一个创建的例子:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
public class CreatXL {
public static String outputFile = "D:\\test.xls";
public static void main(String []args) {
try {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Hello");
HSSFRow row = sheet.createRow((short)0);
HSSFCell cell = row.createCell((short)0);
cell.setCellValue("1");
FileOutputStream fOut = new FileOutputStream(outputFile);
workbook.write(fOut);
fOut.flush();
fOut.close();
System.out.println("文件已生成...");
}catch(Exception e) {
System.out.println("已运行xlCreate():"+e);
}
}
}
又继续写了一个读取的例子:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
public static String fileToBeRead = "D:\\test.xls";
public static void main(String []args) {
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
HSSFSheet sheet = workbook.getSheet("Hello");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
System.out.println("左上端单元是: " + cell.getStringCellValue());
} catch (Exception e) {
System.out.println("已运行xlRead() : " + e);
}
}
}
之后,迫不及待的编译运行。首先,运行创建程序:
然后找到D盘下的test.xsl,打开之后如下(正确):
再次兴奋的打开创建程序:
那么到这里学习就结束了????
五进一步掌握
只是了解了简单的创建读取操作是不够的呀(组长可能会吃了我),那么这个时候把我们项目数据截取一部分读取试试?
说着就开始写代码:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
public static String fileToBeRead = "D:\\test1.xls";
public static void main(String []args) {
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
HSSFSheet sheet = workbook.getSheet("Sheet1");
int last = sheet.getLastRowNum();
for(int i=0;i<=last;i++)
{
HSSFRow row = sheet.getRow(i);
String Value0 = row.getCell(0).getStringCellValue();
String Value1 = row.getCell(1).getStringCellValue();
String Value2 = row.getCell(2).getStringCellValue();
String Value3 = row.getCell(3).getStringCellValue();
String Value4 = row.getCell(4).getStringCellValue();
System.out.println(Value0+"\t"+Value1+"\t"+Value2+"\t"
+Value3+"\t"+Value4);
}
}catch(Exception e) {
System.out.println("没有打开文件"+e);
}
}
}
检查了一下语法没错,然后编译运行。what!!!
不能获得???报错了,这个时候,果断百度,然后找到了答案:只需要确定单元格类型即可,添加如下代码:
for(int j=0;j<=4;j++)
{
HSSFCell cell = row.getCell(j);
cell.setCellType(CellType.STRING);
}
具体操作,俺从度娘那里得到的:https://blog.csdn.net/wang704987562/article/details/81837750,大佬呀!
然后再次编写程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
public static String fileToBeRead = "D:\\test1.xls";
public static void main(String []args) {
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
HSSFSheet sheet = workbook.getSheet("Sheet1");
int last = sheet.getLastRowNum();
for(int i=0;i<=last;i++)
{
HSSFRow row = sheet.getRow(i);
for(int j=0;j<=4;j++)
{
HSSFCell cell = row.getCell(j);
cell.setCellType(CellType.STRING);
}
String Value0 = row.getCell(0).getStringCellValue();
String Value1 = row.getCell(1).getStringCellValue();
String Value2 = row.getCell(2).getStringCellValue();
String Value3 = row.getCell(3).getStringCellValue();
String Value4 = row.getCell(4).getStringCellValue();
System.out.println(Value0+"\t"+Value1+"\t"+Value2+"\t"
+Value3+"\t"+Value4);
}
}catch(Exception e) {
System.out.println("没有打开文件"+e);
}
}
}
给大家看看要读取的一部分数据截取:
然后运行打印就有:
六寻求真正的掌握
做完这些之后,其实感觉和Android项目中对json的解析一样,如果我要在项目中使用它,就必须要把我需要的数据单独的获取解析。仅仅是读取创建表的话(组长会打死我...),所以就必须要掌握,当然就找到了一篇解析的例子:
https://www.jb51.net/article/157349.htm,然后又百度找到了POI中对Excel的相关操作作为备份(以防需要用时少找资料)。
总结:
回顾一下这次学习的经历,首先接受任务--->然后需求度娘了解基本的概念操作---->自己动手实践简单项目--->实现较复杂的项目联系---->回顾自己需要掌握的程度去寻找资料,然后进行联系,备份相关资料---->学习POI基本完成。
上述就是我学习POI的经过,其实其他的自学很多时候也是这样的模式。其中也有错误的地方,但是不断的总结的话,相信可以更好呀。不知道各位大佬有什么更好的学习方式吗?欢迎评论交流哦。