Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法
实现代码:
import java.io.FileInputStream; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.POIXMLException; 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.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.ss.usermodel.Cell; 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 ExcelUtils { public List<Object[]> importExcel(String filePath) throws Exception{ List<Object[]> list=new ArrayList<Object[]>(); String fileType=filePath.substring(filePath.lastIndexOf(".")+1); try { if("xls".equalsIgnoreCase(fileType)){ list= importExcel03(filePath); }else{ list= importExcel07(filePath); } } catch(OfficeXmlFileException e){//通过手动修改文件名 引起的异常 比如 3.xlsx 重命名 3.xls 其实际文件类型为xlsx list=importExcel07(filePath); } catch(POIXMLException e){//通过手动修改文件名 引起的异常 比如 3.xls 重命名 3.xlsx 其实际文件类型为xls list=importExcel03(filePath); } return list; } public List<Object[]> importExcel03(String filePath) throws IOException{ FileInputStream in=new FileInputStream(filePath); List<Object[]> list=new ArrayList<Object[]>(); HSSFWorkbook wb=new HSSFWorkbook(in); HSSFSheet sheet = wb.getSheetAt(0); int rows = sheet.getPhysicalNumberOfRows(); HSSFRow row=sheet.getRow(0); int cells=row.getLastCellNum(); Object[] csr=null; for(int i=1;i<rows;i++){ row=sheet.getRow(i); csr=new String[cells]; for(int j=0;j<cells;j++){ HSSFCell cell=row.getCell(j); Object obj=null; if(cell!=null){ obj=getValue(cell); } csr[j]=obj; } list.add(csr); } if(in!=null)in.close(); return list; } public List<Object[]> importExcel07(String filePath) throws IOException{ List<Object[]> list=new ArrayList<Object[]>(); FileInputStream in=new FileInputStream(filePath); XSSFWorkbook wb=new XSSFWorkbook(in); XSSFSheet sheet = wb.getSheetAt(0); int rows = sheet.getPhysicalNumberOfRows(); XSSFRow row=sheet.getRow(0); int cells=row.getLastCellNum(); Object[] csr=null; for(int i=1;i<rows;i++){ row=sheet.getRow(i); csr=new String[cells]; for(int j=0;j<cells;j++){ XSSFCell cell=row.getCell(j); Object obj=null; if(cell!=null){ obj=getValue(cell); } csr[j]=obj; } list.add(csr); } if(in!=null)in.close(); return list; } @SuppressWarnings("static-access") public String getValue(Cell cell){ int type=cell.getCellType(); String s=""; if(type==cell.CELL_TYPE_NUMERIC){ if(HSSFDateUtil.isCellDateFormatted(cell)){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); s=sdf.format(cell.getDateCellValue()); }else { BigDecimal db = new BigDecimal(cell.getNumericCellValue()); s=String.valueOf(db); } }else if(type==cell.CELL_TYPE_STRING){ s=cell.getStringCellValue(); }else if(type==cell.CELL_TYPE_BOOLEAN){ s=cell.getBooleanCellValue()+""; }else if(type==cell.CELL_TYPE_FORMULA){ s=cell.getCellFormula(); }else if(type==cell.CELL_TYPE_BLANK){ s=" "; }else if(type==cell.CELL_TYPE_ERROR){ s=" "; }else{ } return s.trim(); } public static void main(String[] args) { ExcelUtils ex=new ExcelUtils(); try { List<Object[]> list=ex.importExcel("D:\\3.xls"); for(Object[] ss:list){ for(Object s:ss){ System.out.print(s+"\t"); } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机Java中用POI实现将数据导出到Excel的方法
后端开发2023-06-14
Java使用POI实现导出Excel的方法详解
后端开发2022-11-13
Java原生POI实现的Excel导入导出(简单易懂)
后端开发2023-09-01
Java+element实现excel的导入和导出
后端开发2023-05-16
vue-element-admin项目导入和导出的实现方法
后端开发2023-06-15
Springboot实现导入导出Excel的方法
后端开发2024-04-02
drupal导入数据的实现方法
后端开发2022-06-12
drupal导入图片的实现方法
后端开发2022-06-12
java中的export方法实现导出excel文件
后端开发2024-04-02
MySQL中数据导入和导出的方法详解
后端开发2023-10-22
SpringBoot+Vue实现EasyPOI导入导出的方法详解
后端开发2024-04-02
Java在Word中插入上标和下标的实现方法
后端开发2022-11-13
从SQL Server中导入和导出Excel的基本方法
后端开发2024-04-02
Java中easypoi导入校验的方法是什么
后端开发2023-07-05
SpringBootEasyPoi动态导入导出的两种方式实现方法详解
后端开发2024-04-02
Python导入其他文件夹中函数的实现方法
后端开发2023-01-06
Java中JNDI注入的实现方法是什么
后端开发2023-06-25
咦!没有更多了?去看看其它编程学习网 内容吧