java的poi技术读取Excel
来源:互联网 发布:61h端口 编辑:程序博客网 时间:2024/06/04 19:19
原文
项目中所需要的jar文件:
所用的Excel数据(2003-2007,2010都是一样的数据)
运行效果:
—————————————这个是我简化的demo(.xlsx部分注释了)——————————————————
1.ReadExcel.java
import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.poi.hssf.usermodel.HSSFCell;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;*//** * 读取Excel文件 (.xls .xlsx) */public class ReadExcel { /** * read the Excel file * @param path the path of the Excel file * @return * @throws IOException */ public List<Map<String, Object>> readExcel(String path) throws IOException { if (path == null || "".equals(path)) { return null; } else { String postfix =""; if (path.contains(".")) { postfix= path.substring(path.lastIndexOf(".") + 1, path.length()); } if (!"".equals(postfix)) { if ("xls".equals(postfix)) { return readXls(path); } /*else if ("xlsx".equals(postfix)) { return readXlsx(path); }*/ } else { System.out.println(path + ": Not the Excel file!"); } } return null; } /** * Read the Excel 2010 * @param path the path of the excel file * @return * @throws IOException *//* public List<Map<String, Object>> readXlsx(String path) throws IOException { System.out.println("Processing..." + path); InputStream is = new FileInputStream(path); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); // Read the Sheet for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // Read the Row for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow != null) { Map<String, Object> map=new HashMap<String, Object>(); XSSFCell no = xssfRow.getCell(0); XSSFCell name = xssfRow.getCell(1); XSSFCell age = xssfRow.getCell(2); XSSFCell score = xssfRow.getCell(3); map.put("no", getValue(no)); map.put("name", getValue(name)); map.put("age", getValue(age)); map.put("score", Float.valueOf(getValue(score))); list.add(map); } } } return list; }*/ /** * Read the Excel 2003-2007 * @param path the path of the Excel * @return * @throws IOException */ public List<Map<String, Object>> readXls(String path) throws IOException { System.out.println("Processing..." + path); InputStream is = new FileInputStream(path); HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); // Read the Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null) { continue; } // Read the Row for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow != null) { Map<String, Object> map=new HashMap<String, Object>(); HSSFCell oneColumn = hssfRow.getCell(0); HSSFCell twoColumn = hssfRow.getCell(1); HSSFCell threeColumn = hssfRow.getCell(2); HSSFCell fourColumn = hssfRow.getCell(3); map.put("no", getValue(oneColumn)); map.put("name", getValue(twoColumn)); map.put("age", getValue(threeColumn)); map.put("score", Float.valueOf(getValue(fourColumn))); list.add(map); } } } return list; } /* @SuppressWarnings("static-access") private String getValue(XSSFCell xssfRow) { if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) { return String.valueOf(xssfRow.getBooleanCellValue()); } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) { return String.valueOf(xssfRow.getNumericCellValue()); } else { return String.valueOf(xssfRow.getStringCellValue()); } }*/ @SuppressWarnings("static-access") private String getValue(HSSFCell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { return String.valueOf(hssfCell.getNumericCellValue()); } else { return String.valueOf(hssfCell.getStringCellValue()); } }}
2.Client.java 调用示例
import java.io.IOException;import java.util.List;import java.util.Map;import com.impay.test.ReadExcel;/** * 读取示例demo入口 */public class Client { public static void main(String[] args) throws IOException { String excel2003_2007 ="E:new.xls";//文件路径 // read the 2003-2007 excel List<Map<String, Object>> list = new ReadExcel().readExcel(excel2003_2007); if (list != null) { for (Map<String, Object> map : list) { System.out.println("No. : " + map.get("no") + ", name : " + map.get("name") + ", age : " + map.get("age") + ", score : " + map.get("score")); } } System.out.println("================读取xls结束======================"); // read the 2010 excel /* String excel2010 = "E:new.xlsx"; List<Map<String, Object>> list1 = new ReadExcel().readExcel(excel2010); if (list1 != null) { for (Map<String, Object> map : list1) { System.out.println("No. : " + map.get("no") + ", name : " + map.get("name") + ", age : " + map.get("age") + ", score : " + map.get("score")); } } System.out.println("================读取xlsx结束======================");*/ }}
阅读全文
0 0
- java的poi技术读取Excel
- java的poi技术读取Excel
- java的poi技术读取Excel
- Java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- Java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- Java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- Java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- java的poi技术读取Excel数据到Mysql
- java的poi技术读取和导入Excel
- Java的poi技术读取和导入Excel简单实例
- java的poi技术读取和导入Excel
- java的poi技术读取Excel[2003-2007,2010]
- Java的poi技术读取和导入Excel
- linux MATLAB 2017安装 ubuntu14.04
- 自定义checkbox和点击效果
- 矩阵排序
- filter和servlet的比较
- android 图片与byte数组间的转换
- java的poi技术读取Excel
- 1335: 算法实现题 2-5 半数集问题
- 计算机视觉-欧拉角和旋转矩阵之间的转换
- new和malloc的区别
- 解决listview嵌套checkbox滑动时状态的错乱
- Redis集群搭建与简单使用
- java 中String 经常会使用到的方法
- 进制计算
- Django根据现有数据库,自动生成models模型文件