本来是来人要实时数据库一部分数据,量很大直接写入txt又会有文件过大打不开、不方便他们查看一堆事儿,就了解学习了下怎么写入excel。
这里就是将数据封装进list之后,又遍历写入excel
当然弊端也很明显,这个方法还是基础,加上excel行数的限制要特别大的数据量,你也不能放进一个工作簿,看自己需求吧,简单的还是够用的。
这里需要两个jar包的导入
依赖放在这里,也方便自己下次使用
maven里找的用的比较多的版本
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<dependency>
<groupId>poi</groupId>
<artifactId>poi</artifactId>
<version>2.5.1-final-20040804</version>
</dependency>
写入
这里并不是完整的代码,但里边对数据写入excel的操作是完整的,依然能学到这个操作的简单用法。
List<taginfo> taginfos = testAci.HistroyWolVal("KD_DS1#2#_1#2#XHSHSWD", "2021-5-10 00:00:00", "2021-5-25 00:00:00");
String[] title=new String[]{"点名","点位描述","值","时间"};
File file = new File("D:\\\\anjieremberdelete\\\\agilorapi-java-win\\\\src\\\\main\\\\java\\\\cn\\\\ac\\\\iscas\\\\agilor\\\\api\\\\test.xls");
//判断file是否存在
if(file.exists()){
file.delete();
System.out.println("原有表单删除成功");
}
file.createNewFile();
//创建工作簿
WritableWorkbook workbook = Workbook.createWorkbook(file);
WritableSheet sheet1 = workbook.createSheet("sheet1", 0);
Label label=null;
//设置列名
for (int j = 0; j <title.length ; j++) {
label=new Label(j,0,title[j]);
sheet1.addCell(label);
}
//方便定义行
int count=0;
//将list中的数据添加至工作簿中
for (taginfo taginfo : taginfos) {
count++;
label=new Label(0,count,taginfo.taagname);
sheet1.addCell(label);
label=new Label(1,count,taginfo.desc);
sheet1.addCell(label);
label=new Label(2,count,taginfo.val+"");
sheet1.addCell(label);
label=new Label(3,count,taginfo.date);
sheet1.addCell(label);
}
workbook.write();
workbook.close();
代码细节也不必纠结,我只是一个垃圾运维厂狗,哈哈哈哈哈嗝
程序跑完后也得到了数据写入的excel的表,表的内容也是我想要的
读出
File file = new File("D:\\anjieremberdelete\\KD_DS1#2#_5.10-5.25_tagInfo\\filePointComparisonTable.xls");
Workbook workbook = Workbook.getWorkbook(file);
int numberOfSheets = workbook.getNumberOfSheets();//获取这个工作簿中有多少个工作表
Sheet sheet = workbook.getSheet(0);//这里我知道文件里就一个工作表就不去循环了
for (int i = 0; i <sheet.getRows() ; i++) {//循环行
for (int j = 0; j <sheet.getColumns() ; j++) {//循环列
Cell cell = sheet.getCell(j, i);//获取单元格
String contents = cell.getContents();//获取单元格的内容
System.out.print(contents+" ");//一行行输出
}
System.out.println();
}
结果展示