首页 > 代码库 > Java 读取excel文件 兼容97-2013 V2.0
Java 读取excel文件 兼容97-2013 V2.0
注释里有struts的上传文件和Springmvc有些不一样。读写都是一样的 修复删除缓存文件占用的问题
package com.telling.cw.util.poi; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; 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; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * poi 读取excel 支持2003 --2007 及以上文件 * * @author sunny * @version V 2.0 * @CreatTime 2013-11-19 @ */ public class ExcelUtils { /** * 合并方法,读取excel文件 * 根据文件名自动识别读取方式 * 支持97-2013格式的excel文档 * * @param fileName * 上传文件名 * @param file * 上传的文件 * @return 返回列表内容格式: * 每一行数据都是以对应列的表头为key 内容为value 比如 excel表格为: * =============== * A | B | C | D * ===|===|===|=== * 1 | 2 | 3 | 4 * ---|---|---|--- * a | b | c | d * --------------- * 返回值 map: * map1: A:1 B:2 C:3 D:4 * map2: A:a B:b C:d D:d * @throws java.io.IOException */ @SuppressWarnings("rawtypes") public static List<Map> readExcel(String fileName,MultipartFile file) throws Exception{ //准备返回值列表 List<Map> valueList=new ArrayList<Map>(); // String tempSavePath="tmp";//缓存文件目录的文件夹名称(struts用) String filepathtemp="/mnt/b2b/tmp";//缓存文件目录 String tmpFileName= System.currentTimeMillis()+"."+getExtensionName(fileName); String ExtensionName=getExtensionName(fileName); // String filepathtemp= ServletActionContext.getServletContext().getRealPath(tempSavePath);//strut获取项目路径 File filelist = new File(filepathtemp); if (!filelist .exists() && !filelist .isDirectory()) { filelist .mkdir(); } String filePath = filepathtemp+System.getProperty("file.separator")+tmpFileName; File tmpfile = new File(filePath); //拷贝文件到服务器缓存目录(在项目下) // copy(file,tmpfile);//stuts用的方法 copy(file, filepathtemp,tmpFileName);//spring mvc用的方法 //System.out.println("后缀名:"+ExtensionName); if(ExtensionName.equalsIgnoreCase("xls")){ valueList=readExcel2003(filePath); }else if(ExtensionName.equalsIgnoreCase("xlsx")) { valueList=readExcel2007(filePath); } //删除缓存文件 tmpfile.delete(); return valueList; } /** * 读取97-2003格式 * @param filePath 文件路径 * @throws java.io.IOException */ @SuppressWarnings("rawtypes") public static List<Map> readExcel2003(String filePath) throws IOException{ //返回结果集 List<Map> valueList=new ArrayList<Map>(); FileInputStream fis=null; try { fis=new FileInputStream(filePath); HSSFWorkbook wookbook = new HSSFWorkbook(fis); // 创建对Excel工作簿文件的引用 HSSFSheet sheet = wookbook.getSheetAt(0); // 在Excel文档中,第一张工作表的缺省索引是0 int rows = sheet.getPhysicalNumberOfRows(); // 获取到Excel文件中的所有行数 Map<Integer,String> keys=new HashMap<Integer, String>(); int cells=0; // 遍历行(第1行 表头) 准备Map里的key HSSFRow firstRow = sheet.getRow(0); if (firstRow != null) { // 获取到Excel文件中的所有的列 cells = firstRow.getPhysicalNumberOfCells(); // 遍历列 for (int j = 0; j < cells; j++) { // 获取到列的值 try { HSSFCell cell = firstRow.getCell(j); String cellValue = http://www.mamicode.com/getCellValue(cell);>Java 读取excel文件 兼容97-2013 V2.0
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。