java 写excel文件
Posted 一休Q_Q
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 写excel文件相关的知识,希望对你有一定的参考价值。
在文本内容结构化抽取时,经常需要将抽取的结果写到excel文档中,这里针对新建excel文档和针对已经存在的excel追加内容的操作,进行记录。
一、Excel基本概念
Workbook:工作簿,代表一个Excel文件。Excel分为两种,后缀名为xls的HSSFWorkBook(2003版本及以前),和后缀名为xlsx的XSSFWorkBook(2007版本及以后)
Sheet:表格,一个Workbook中可以有多个表格。
Row:行(通过Sheet可以获取到某一行)
Cell:单元格(通过Row可以获取到某个单元格,单元格中存放数据)
二/引用依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
String style = path.substring(path.lastIndexOf(".") + 1, path.length());
Workbook workbook;
File file = new File(path);
boolean flag=false;
if(file.exists())
flag = true;
FileInputStream fs = new FileInputStream(path);
if ("XLS".equals(style.toUpperCase()))
// 使用POI提供的方法得到excel的信息
POIFSFileSystem ps = new POIFSFileSystem(fs);
workbook = new HSSFWorkbook(ps);
else
workbook = new XSSFWorkbook(fs);
else
if ("XLS".equals(style.toUpperCase()))
workbook = new HSSFWorkbook();
else
workbook = new XSSFWorkbook();
//遍历输入的数据集
System.out.println(resultDataSets.length+" "+path);
for(int i=0;i<resultDataSets.length;++i)
ResultDataSet resultDataSet=resultDataSets[i];
// 生成一个表格
System.out.println(i+" name="+resultDataSet.getTableName());
Sheet sheet = null;
if(!flag)
sheet = workbook.createSheet(resultDataSet.getTableName());
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((short) 15);
else
sheet = workbook.getSheetAt(0);
//获取字段名称和字段值列表
ArrayList<ResultField> fields = (ArrayList<ResultField>) resultDataSet.getFields();
ArrayList<ResultRecord> records = (ArrayList<ResultRecord>) resultDataSet.getRecords();
//构建标题行
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("ID");
for(int j=0;j<fields.size();++j)
ResultField field = fields.get(j);
cell = row.createCell(j+1);
cell.setCellValue(field.getFieldName());
int index = sheet.getLastRowNum();
//对于数据,依次写入数据的各个字段
for(int j=0;j<records.size();++j)
ResultRecord record= records.get(j);
index++;
row = sheet.createRow(index);
cell=row.createCell(0);
cell.setCellValue(index);
for(int k=0;k<fields.size();++k)
ResultField textField = fields.get(k);
cell = row.createCell(k + 1);
FieldType fieldType = textField.getFieldType();
switch (fieldType)
//STRING, INT, FLOAT, DOUBLE, DATE
case STRING:
cell.setCellValue((String) record.getFieldValue(k));
break;
case FLOAT:
cell.setCellValue((float) record.getFieldValue(k));
break;
case INT:
cell.setCellValue((int) record.getFieldValue(k));
break;
case DOUBLE:
cell.setCellValue((double)record.getFieldValue(k));
break;
default:
break;
file = new File(path);
OutputStream outputStream = null;
try
outputStream = new FileOutputStream(file);
workbook.write(outputStream);
outputStream.flush();
catch (Exception e)
throw e;
finally
try
if (null != outputStream)
outputStream.close();
catch (Exception e)
throw e;
以上是关于java 写excel文件的主要内容,如果未能解决你的问题,请参考以下文章
如何用java读取excel中的数据?下面的例子不能读出自己写的excel数据
java jxls导入excel 的多个sheet 代码该如何写 配置文件怎么写? 还有jxls 能读入07 excel吗?