首页 / JAVA / java poi 导入excel
java poi 导入excel
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java poi 导入excel,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5109字,纯文字阅读大概需要8分钟。
内容图文
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能。
所需jar包 http://pan.baidu.com/s/1sjPuWDR
package example.poi; import java.io.*; import java.text.DecimalFormat; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; publicclass ImportExcel { private Workbook wb = null; private Sheet sheet = null; private Row row = null; privateint sheetNum = 0; privateint rowNum = 0; private FileInputStream fis = null; private File file = null; private DecimalFormat df = new DecimalFormat("0"); public ImportExcel() { super(); } publicvoid setSheetNum(int sheetNum) { this.sheetNum = sheetNum; } publicvoid setRowNum(int rowNum) { this.rowNum = rowNum; } publicvoid setFile(File file) { this.file = file; } /** * 读取excel文件获得HSSFWorkbook对象 * @throws IOException */publicvoid open(String filePath) throws IOException { if(validateExcel(filePath)) { file = new File(filePath); fis = new FileInputStream(file); if(isExcel2003(filePath)) { wb = new HSSFWorkbook(fis); } else { wb = new XSSFWorkbook(fis); } fis.close(); } } /** * 获取sheet表数目 * @return sheet表数目 */publicint getSheetCount() { int sheetCount = -1; sheetCount = wb.getNumberOfSheets(); return sheetCount; } /** * 获取sheetNum下的记录行数 * @return 记录行数 */publicint getRowCount() { if(wb == null) { System.err.println("----------->WorkBook为空"); } Sheet sheet = wb.getSheetAt(this.sheetNum); int rowCount = -1; rowCount = sheet.getLastRowNum(); return rowCount; } /** * 获取指定sheetNum的记录行数 * @param sheetNum 表编号 * @return 记录行数 */publicint getRowCount(int sheetNum) { Sheet sheet = wb.getSheetAt(sheetNum); int rowCount = -1; rowCount = sheet.getLastRowNum(); return rowCount; } /** * 得到指定行的内容 * @param lineNum 行数 * @return 内容 */public String[] readExcelLine(int lineNum) { return readExcelLine(this.sheetNum, lineNum); } /** * 获取指定工作表和行数的内容 * @param sheetNum 表编号 * @param lineNum 行数 * @return 内容 */public String[] readExcelLine(int sheetNum, int lineNum) { if(sheetNum < 0 || lineNum < 0) { returnnull; } String[] strExcelLine = null; try { sheet = wb.getSheetAt(sheetNum); row = sheet.getRow(lineNum); int cellCount = row.getLastCellNum(); strExcelLine = new String[cellCount + 1]; for(int i = 0; i <= cellCount; i++) { strExcelLine[i] = readStringExcelCell(lineNum, i); } } catch (Exception e) { e.printStackTrace(); } return strExcelLine; } /** * 获取指定列的内容 * @param cellNum 列编号 * @return 内容 */public String readStringExcelCell(int cellNum) { return readStringExcelCell(this.rowNum, cellNum); } /** * 获取指定行和列编号的内容 * @param rowNum 行编号 * @param cellNum 列编号 * @return 内容 */public String readStringExcelCell(int rowNum, int cellNum) { return readStringExcelCell(this.sheetNum, rowNum, cellNum); } /** * 获取指定工作表、行、列的内容 * @param sheetNum 表编号 * @param rowNum 行编号 * @param cellNum 列编号 * @return 内容 */public String readStringExcelCell(int sheetNum, int rowNum, int cellNum) { if(sheetNum < 0 || rowNum < 0) { return ""; } String strExcelCell = ""; try { sheet = wb.getSheetAt(sheetNum); row = sheet.getRow(rowNum); if(row.getCell(cellNum) != null) { switch(row.getCell(cellNum).getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: strExcelCell = "FORMULA"; break; case HSSFCell.CELL_TYPE_NUMERIC: //strExcelCell = String.valueOf(row.getCell(cellNum).getNumericCellValue()); //防止科学计数,不需要的话可以用上一行 strExcelCell = decimalFormat(row.getCell(cellNum).getNumericCellValue()); break; case HSSFCell.CELL_TYPE_STRING: strExcelCell = row.getCell(cellNum).getStringCellValue(); break; case HSSFCell.CELL_TYPE_BLANK: strExcelCell = ""; break; default: strExcelCell = ""; break; } } } catch (Exception e) { e.printStackTrace(); } return strExcelCell; } /** * 测试 * @param args */publicstaticvoid main(String[] args) { String filePath = "C:\\Users\\Administrator\\Desktop\\工作簿1.xlsx"; ImportExcel ie = new ImportExcel(); try { ie.open(filePath); } catch (IOException e) { e.printStackTrace(); } ie.setSheetNum(0); int count = ie.getRowCount(); for (int i = 0; i <= count; i++) { String[] rows = ie.readExcelLine(i); for (int j = 0; j < rows.length; j++) { System.out.print(rows[j] + " "); } System.out.print("\n"); } } /** * 验证文件是否存在以及是否是excel文件 * @param filePath * @return 结果 */publicboolean validateExcel(String filePath) { if(filePath == null || ! (isExcel2003(filePath) || isExcel2007(filePath))) { System.err.println("文件不是excel文件!"); returnfalse; } File file = new File(filePath); if(file == null || ! file.exists()) { System.err.println("文件不存在!"); returnfalse; } returntrue; } /** * 判断是否是2003版excel * @param filePath 文件路径 * @return 结果 */publicboolean isExcel2003(String filePath) { return filePath.matches("^.+\\.(?i)(xls)$"); } /** * 判断是否是2007版excel * @param filePath 文件路径 * @return 结果 */publicboolean isExcel2007(String filePath) { return filePath.matches("^.+\\.(?i)(xlsx)$"); } /** * 将获取到的数据类型转换成String防止科学计数法 * @param decimal 数据 * @return 结果 */public String decimalFormat(Double decimal) { return df.format(decimal); } }
内容借鉴:
http://download.csdn.net/detail/wangquanzheng/3526296
http://blog.csdn.net/mmm333zzz/article/details/7962377
原文:http://www.cnblogs.com/fu-yun/p/4553698.html
内容总结
以上是互联网集市为您收集整理的java poi 导入excel全部内容,希望文章能够帮你解决java poi 导入excel所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。