JavaWeb一个完整的Servlet上传Excel表格使用poi解析至数据库实现(兼容2003,2007)。
来源:互联网 发布:淘宝网店装修策略 编辑:程序博客网 时间:2024/05/28 15:20
完整的估计得等两天,等时间空下来了再写,主要参考以下三篇博客。
参考
http://blog.csdn.net/meng564764406/article/details/52444644
http://blog.csdn.net/evangel_z/article/details/7332535
http://blog.csdn.net/tmaskboy/article/details/51755305
核心
package com.excel;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.LinkedList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadExcel {/** * 对外提供读取excel 的方法 */public static List<List<Object>> readExcel(File file) throws IOException {String fileName = file.getName();String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName.substring(fileName.lastIndexOf(".") + 1);if ("xls".equals(extension)) {return read2003Excel(file);} else if ("xlsx".equals(extension)) {return read2007Excel(file);} else {throw new IOException("不支持的文件类型");}}/** * 读取 office 2003 excel * * @throws IOException * @throws FileNotFoundException */private static List<List<Object>> read2003Excel(File file) throws IOException {List<List<Object>> list = new LinkedList<List<Object>>();HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));HSSFSheet sheet = hwb.getSheetAt(0);Object value = null;HSSFRow row = null;HSSFCell cell = null;int counter = 0;for (int i = sheet.getFirstRowNum(); counter < sheet.getPhysicalNumberOfRows(); i++) {row = sheet.getRow(i);if (row == null) {continue;} else {counter++;}List<Object> linked = new LinkedList<Object>();for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {cell = row.getCell(j);if (cell == null) {continue;}DecimalFormat df = new DecimalFormat("0");// 格式化 number String// 字符SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字switch (cell.getCellType()) {case XSSFCell.CELL_TYPE_STRING:value = cell.getStringCellValue();break;case XSSFCell.CELL_TYPE_NUMERIC:if ("@".equals(cell.getCellStyle().getDataFormatString())) {value = df.format(cell.getNumericCellValue());} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {value = nf.format(cell.getNumericCellValue());} else {value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));}break;case XSSFCell.CELL_TYPE_BOOLEAN:value = cell.getBooleanCellValue();break;case XSSFCell.CELL_TYPE_BLANK:value = "";break;default:value = cell.toString();}if (value == null || "".equals(value)) {continue;}linked.add(value);}list.add(linked);}return list;}/** * 读取Office 2007 excel */private static List<List<Object>> read2007Excel(File file) throws IOException {List<List<Object>> list = new LinkedList<List<Object>>();// 构造 XSSFWorkbook 对象,strPath 传入文件路径XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));// 读取第一章表格内容XSSFSheet sheet = xwb.getSheetAt(0);Object value = null;XSSFRow row = null;XSSFCell cell = null;int counter = 0;for (int i = sheet.getFirstRowNum(); counter < sheet.getPhysicalNumberOfRows(); i++) {row = sheet.getRow(i);if (row == null) {continue;} else {counter++;}List<Object> linked = new LinkedList<Object>();for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {cell = row.getCell(j);if (cell == null) {continue;}DecimalFormat df = new DecimalFormat("0");// 格式化 number String// 字符SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字switch (cell.getCellType()) {case XSSFCell.CELL_TYPE_STRING:value = cell.getStringCellValue();break;case XSSFCell.CELL_TYPE_NUMERIC:if ("@".equals(cell.getCellStyle().getDataFormatString())) {value = df.format(cell.getNumericCellValue());} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {value = nf.format(cell.getNumericCellValue());} else {value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));}break;case XSSFCell.CELL_TYPE_BOOLEAN:value = cell.getBooleanCellValue();break;case XSSFCell.CELL_TYPE_BLANK:value = "";break;default:value = cell.toString();}if (value == null || "".equals(value)) {continue;}linked.add(value);}list.add(linked);}return list;}}
阅读全文
0 0
- JavaWeb一个完整的Servlet上传Excel表格使用poi解析至数据库实现(兼容2003,2007)。
- POI 解析Excel(兼容 2003,2007)
- Servlet + Jsp + Poi 实现 excel 的解析
- 使用poi解析excel表格
- javaweb使用POI导出导出excel表格
- POI解析excel表格导入数据库
- POI解析excel表格
- 使用POI输出EXCEL表格 一个程序
- Java 使用POI实现Excel表格的导入导出
- 使用Apach poi 实现对Excel表格的简单读写
- Java 使用POI实现Excel表格的导入导出
- 【JavaWeb开发】使用java实现简单的Excel文件的导入与导出(POI)
- javaweb基于struct2使用POI修改excel表格某处的信息
- 《poi excel批量导入数据库 2003与2007兼容》使用说明
- 用POI上传EXCEL表格 日期解析问题
- 【POI】使用POI输出EXCEL表格 一个程序
- POI:上传EXCEL解析
- poi实现excel的解析
- 6月5日,每日20行。
- Java Ehcache cache 使用例子
- 异常--Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space
- 六大Web负载均衡原理与实现
- Spring缓存
- JavaWeb一个完整的Servlet上传Excel表格使用poi解析至数据库实现(兼容2003,2007)。
- Android解析自定义属性的XML实现底部导航栏TabSelectedView,实现灵活的配置扩展
- 整数排序
- edittext 回车搜索
- Gif动图后台获取 适应屏幕
- sip协议的简介(一)
- java实现找出数组中出现次数超过一半的数字
- spring自动装配
- 融合支付平台