java工作人员日常工作_关于java:JAVA日常工作POIUtils

记录一下工作中应用的poi(能够做为工具类来应用)

/**

* 解决excel读入的工具类

* Created by Liujishuai on 2015/8/5.

*/

public class ExcelUtils {

/**

* 要求excel版本在2007以上

*

* @param file 文件信息

* @return

* @throws Exception

*/

public static List> readExcel(File file) throws Exception {

if(!file.exists()){

throw new Exception("找不到文件");

}

List> list = new LinkedList>();

XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));

// 读取第一张表格内容

XSSFSheet sheet = xwb.getSheetAt(0);

XSSFRow row = null;

XSSFCell cell = null;

for (int i = (sheet.getFirstRowNum() + 1); i <= (sheet.getPhysicalNumberOfRows() - 1); i++) {

row = sheet.getRow(i);

if (row == null) {

continue;

}

List linked = new LinkedList();

for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {

Object value = null;

cell = row.getCell(j);

if (cell == null) {

continue;

}

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_STRING:

//String类型返回String数据

value = cell.getStringCellValue();

break;

case XSSFCell.CELL_TYPE_NUMERIC:

//日期数据返回LONG类型的工夫戳

if ("yyyy\"年\"m\"月\"d\"日\";@".equals(cell.getCellStyle().getDataFormatString())) {

//System.out.println(cell.getNumericCellValue()+":日期格局:"+cell.getCellStyle().getDataFormatString());

value = DateUtils.getMillis(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())) / 1000;

} else {

//数值类型返回double类型的数字

//System.out.println(cell.getNumericCellValue()+":格局:"+cell.getCellStyle().getDataFormatString());

value = cell.getNumericCellValue();

}

break;

case XSSFCell.CELL_TYPE_BOOLEAN:

//布尔类型

value = cell.getBooleanCellValue();

break;

case XSSFCell.CELL_TYPE_BLANK:

//空单元格

break;

default:

value = cell.toString();

}

if (value != null && !value.equals("")) {

//单元格不为空,则退出列表

linked.add(value);

}

}

if (linked.size()!= 0) {

list.add(linked);

}

}

return list;

}

/**

* 要求excel版本在2007以上

*

* @param fileInputStream 文件信息

* @return

* @throws Exception

*/

public static List> readExcel(FileInputStream fileInputStream) throws Exception {

List> list = new LinkedList>();

XSSFWorkbook xwb = new XSSFWorkbook(fileInputStream);

// 读取第一张表格内容

XSSFSheet sheet = xwb.getSheetAt(1);

XSSFRow row = null;

XSSFCell cell = null;

for (int i = (sheet.getFirstRowNum() + 1); i <= (sheet.getPhysicalNumberOfRows() - 1); i++) {

row = sheet.getRow(i);

if (row == null) {

continue;

}

List linked = new LinkedList();

for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {

Object value = null;

cell = row.getCell(j);

if (cell == null) {

continue;

}

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_STRING:

value = cell.getStringCellValue();

break;

case XSSFCell.CELL_TYPE_NUMERIC:

if ("yyyy\"年\"m\"月\"d\"日\";@".equals(cell.getCellStyle().getDataFormatString())) {

//System.out.println(cell.getNumericCellValue()+":日期格局:"+cell.getCellStyle().getDataFormatString());

value = DateUtils.getMillis(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())) / 1000;

} else {

//System.out.println(cell.getNumericCellValue()+":格局:"+cell.getCellStyle().getDataFormatString());

value = cell.getNumericCellValue();

}

break;

case XSSFCell.CELL_TYPE_BOOLEAN:

value = cell.getBooleanCellValue();

break;

case XSSFCell.CELL_TYPE_BLANK:

break;

default:

value = cell.toString();

}

if (value != null && !value.equals("")) {

//单元格不为空,则退出列表

linked.add(value);

}

}

if (linked.size()!= 0) {

list.add(linked);

}

}

return list;

}

/**

* 导出excel

* @param excel_name 导出的excel门路(须要带.xlsx)

* @param headList excel的题目备注名称

* @param fieldList excel的题目字段(与数据中map中键值对应)

* @param dataList excel数据

* @throws Exception

*/

public static void createExcel(String excel_name, String[] headList,

String[] fieldList, List> dataList)

throws Exception {

// 创立新的Excel 工作簿

XSSFWorkbook workbook = new XSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值

XSSFSheet sheet = workbook.createSheet();

// 在索引0的地位创立行(最顶端的行)

XSSFRow row = sheet.createRow(0);

// 设置excel头(第一行)的头名称

for (int i = 0; i < headList.length; i++) {

// 在索引0的地位创立单元格(左上端)

XSSFCell cell = row.createCell(i);

// 定义单元格为字符串类型

cell.setCellType(XSSFCell.CELL_TYPE_STRING);

// 在单元格中输出一些内容

cell.setCellValue(headList[i]);

}

// ===============================================================

//增加数据

for (int n = 0; n < dataList.size(); n++) {

// 在索引1的地位创立行(最顶端的行)

XSSFRow row_value = sheet.createRow(n + 1);

Map dataMap = dataList.get(n);

// ===============================================================

for (int i = 0; i < fieldList.length; i++) {

// 在索引0的地位创立单元格(左上端)

XSSFCell cell = row_value.createCell(i);

// 定义单元格为字符串类型

cell.setCellType(XSSFCell.CELL_TYPE_STRING);

// 在单元格中输出一些内容

cell.setCellValue((dataMap.get(fieldList[i])).toString());

}

// ===============================================================

}

// 新建一输入文件流

FileOutputStream fos = new FileOutputStream(excel_name);

// 把相应的Excel 工作簿存盘

workbook.write(fos);

fos.flush();

// 操作完结,敞开文件

fos.close();

}

}

在应用poi之前要导入相干的jar包(poi的jar包的作用)

应用之前导入jar包

org.apache.poi

poi-ooxml

3.12

在应用poi时在导入excel文件时遇到了### java.lang.ClassNotFoundException异样

解决的计划是:

导入了jar包

org.apache.poi

poi-ooxml

4.1.2

org.apache.poi

poi-ooxml-schemas

4.1.2

要留神版本,不要造成版本抵触.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值