有过经验的程序猿都写过exl表格的导入导出功能!而大部分人都没抽时间去研究功能实现的细节,只是一味的为实现功能而写代码!今天也抽点时间对实现exl表格的
导入导出做个小结,针对JAVA开发!
一、EXL导入功能:
(1)、实现步骤:
a、通过流获取指定文件中的exl工作薄
b、遍历工作薄中的工作表
c、遍历工作表中的行
d、遍历工作表中的行中的列
e、判断指定单元表格中值得类型并获取值,进而进行其他操作
(2)、功能代码实现:
package com.tf.util;
/**
* EXL表格导入
* @author wangbf
* @date 2015-11-13
*/
public class ImportExcel {
/**
* 导入exl表格中内容
* @param file
*/
@SuppressWarnings({"static-access" })
public static void importData(File file) {
// 得到工作簿
HSSFWorkbook hssfworkBook = getHSSFWorkbook(file);
// 工作簿中的工作表
HSSFSheet hssfsheet = null;
// 工作表中的行
HSSFRow hssfrow = null;
// 遍历工作簿中的工作表(i表示工作表的数量 ,getNumberOfSheets表示工作表的总数)
for (int i = 0; i < hssfworkBook.getNumberOfSheets(); i++) {
// 获取第i个工作表格
hssfsheet = hssfworkBook.getSheetAt(i);
for (int j = 1; j <= hssfsheet.getLastRowNum(); j++) {
// 获取指定表格中的第j行
hssfrow = hssfsheet.getRow(j);
for (int s = 0; s < hssfrow.getLastCellNum(); s++) {
// 获取指定行中的第s列表格
Cell cell = hssfrow.getCell(s);
// 字符串
if (cell.getCellType() == cell.CELL_TYPE_STRING) {
System.out.println(cell.getStringCellValue());
}
// 数值
else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
System.out.println((long)cell.getNumericCellValue());
}
// 空值
else if (cell.getCellType() == cell.CELL_TYPE_BLANK) {
System.out.println("空值");
}
// boolean值
else if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
System.out.println(cell.getBooleanCellValue());
}
// 公式
else if (cell.getCellType() == cell.CELL_TYPE_FORMULA) {
System.out.println(cell.getCellFormula());
}
// 故障
else if (cell.getCellType() == cell.CELL_TYPE_ERROR) {
System.out.println("存在故障**********");
}
// 未知类型
else {
System.out.println("未知类型的值");
}
}
}
}
};
/**
* 根据文本获取exl工作簿
*
* @param file
* @return hssfworkBook 工作簿
*/
private static HSSFWorkbook getHSSFWorkbook(File file) {
// poi文件流
POIFSFileSystem fs = null;
// 工作簿
HSSFWorkbook hssfworkBook = null;
try {
// 得到文件输入流
fs = new POIFSFileSystem(new FileInputStream(file));
hssfworkBook = new HSSFWorkbook(fs);
return hssfworkBook;
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
(3)、温馨提示:需要用到第三方jar包,请www.baidu.com
二、EXL导出功能:
(1)、实现步骤:
a、创建工作薄
b、生成相关表样式
c、遍历要导出的数据
d、利用输出流导出数据到指定exl中
(2)、功能代码实现:
package com.tf.util;
public class ExportExcel {
/**
* 生成统计报表excel的方法
*
* @param title 每个sheet文件名
* @param headers 表头字段
* @param lists 数据集合
* @param out 输出流
*/
public static void exportRecordsExcel(String title, List
headers, List