JAVA利用POI实现excel的导入导出
来源:互联网 发布:郝斌c语言不压缩百度云 编辑:程序博客网 时间:2024/05/01 11:43
首先去apache官网下载最新版的poi支持jar包,较早的版本不支持office2003:
http://poi.apache.org/download.html#POI-3.14
项目需要添加的jar包:
log4j-12.28.jar
poi-3.14-20160307.jar
poi-ooxml-3.14-20160307.jar
poi-ooxml-schemas-3.14-20160307.jar
xmlbeans-2.6.0.jar
excel导入代码如下:
package Test;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;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.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelImport { private static ExcelImport lp = new ExcelImport(); private static String a = lp.getClass().getResource("/").getPath(); public static List importExl(String filePath) throws IOException { String inPath = a.substring(1); String before = inPath.substring(0,inPath.indexOf("WEB-INF")); filePath = filePath.replaceAll("\r|\n", ""); String oldExcelPath = before +"excelimport/" + filePath; List conSheet = new ArrayList<Test>(); conSheet = dealExl(oldExcelPath) ; return conSheet; } public static List dealExl(String filePath){ List conSheet = new ArrayList<Test>(); Test conObj = null; try { InputStream is = new FileInputStream(filePath); Workbook hssfWorkbook = null; try { hssfWorkbook = new XSSFWorkbook(filePath); } catch (Exception ex) { hssfWorkbook = new HSSFWorkbook(is); } // 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null) { continue; } // 循环行Row for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { Row hssfRow = hssfSheet.getRow(rowNum); conObj = new Test(); // 循环列Cell // 0姓名 1姓名拼音 2性别 3出生年月日 Cell xm = hssfRow.getCell((short) 0); if (xm != null) { conObj.setName(getValue(xm)); } Cell xmpy = hssfRow.getCell((short) 1); if (xmpy == null){ conObj.setPinyinName(getValue(xmpy)); } Cell xb = hssfRow.getCell((short) 2); if (xb == null){ conObj.setGender(getValue(xb)); } Cell csnyr = hssfRow.getCell((short) 3); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); sdf.setLenient(false); Date birth = sdf.parse(getValue(csnyr)); if (csnyr == null){ conObj.setBirthdate(birth); } conSheet.add(conObj); } } is.close(); hssfWorkbook.close(); }catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (ParseException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } return conSheet; } private static String getValue(Cell xm) { if (xm.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) { // 返回布尔类型 return String.valueOf(xm.getBooleanCellValue()); } else if (xm.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { // 返回数值类型 return String.valueOf(xm.getNumericCellValue()); } else { // 返回字符串类型 return String.valueOf(xm.getStringCellValue()); } }}
导出到excel代码如下:
package Test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import commonj.sdo.DataObject; public class ExcelExport { private static ExcelExport lp = new ExcelExport(); private static String a = lp.getClass().getResource("/").getPath(); public static String export(DataObject[] scheSheets) throws IOException { String outPath = a.substring(1); String xlsPath = ""; xlsPath = first(scheSheets,outPath) ; return xlsPath; } @SuppressWarnings("deprecation") public static String first(DataObject[] scheSheets,String outPath){ String destDir = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssS"); String nowTime = sdf.format(new Date()); //文件名 String fileName = nowTime +".xls"; //headers String[] rowName = {"序号","开始时间","结束时间"}; try{ //创建工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); //定位到索引为0的工作表 HSSFSheet sheet = workbook.createSheet("sheet1"); //初始化表头行,获得列数 int columnNum = rowName.length; HSSFRow rowRowName = sheet.createRow(0); // 将列头设置到sheet的单元格中 for(int n=0;n<columnNum;n++){ HSSFCell cellRowName = rowRowName.createCell((short) n); cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); String text = new String(rowName[n]); cellRowName.setCellValue(text); } //将查询出的数据设置到sheet对应的单元格中 for(int i=0;i<scheSheets.length;i++){ DataObject obj = scheSheets[i];//遍历每个对象 HSSFRow row = sheet.createRow(i+1);//创建所需的行数 HSSFCell cell = null; //设置单元格的数据类型 cell = row.createCell((short) 0,HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(i+1); cell = row.createCell((short) 1,HSSFCell.CELL_TYPE_STRING); cell.setCellValue(obj.getString("startDate"));//设置单元格的值 cell = row.createCell((short) 2,HSSFCell.CELL_TYPE_STRING); cell.setCellValue(obj.getString("endDate"));//设置单元格的值 cell = row.createCell((short) 3,HSSFCell.CELL_TYPE_STRING); cell.setCellValue(obj.getString("createTime"));//设置单元格的值 } if(workbook !=null){ try{ String before = outPath.substring(0,outPath.indexOf("WEB-INF")); String oldExcelPath=before +"excelexport/"+ fileName; File file = new File(oldExcelPath); FileOutputStream fileoutputstream = new FileOutputStream(file); workbook.write(fileoutputstream); fileoutputstream.close(); destDir = "excelexport/"+ fileName; }catch (IOException e){ e.printStackTrace(); } } }catch (Exception e) { e.printStackTrace(); } return destDir; }}
0 0
- JAVA利用POI实现excel的导入导出
- 利用POI实现Excel的导入导出
- JAVA实现Excel导入/导出(POI)
- JAVA实现Excel导入/导出(POI)
- java poi实现excel表格导入导出
- java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- Java 使用POI实现Excel表格的导入导出
- java实现excel的导入导出(poi)
- java实现excel的导入导出(poi详解)
- Java 使用POI实现Excel表格的导入导出
- 【Java】SpringMVC整合poi实现excel的导入导出
- Java利用POI实现导出excel文件
- Java利用POI实现数据的Excel导出
- Java利用POI实现数据的Excel导入
- 26. Remove Duplicates from Sorted Array
- 深入理解JVM
- 欢迎使用CSDN-markdown编辑器
- 性能分析系列——小命令保证大性能
- Python与医疗图像2
- JAVA利用POI实现excel的导入导出
- 深入理解 Android 中的Matrix
- SpringMVC从入门到精通(终结版)
- 12. Integer to Roman 和 13. Roman to Integer
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
- UVA 10152 ShellSort
- 奇偶个数-week3-C语言习题集
- 使用Keytool工具生成证书Keystore和证书签名请求文件
- r语言之棘状图spinogram与堆砌条形图