- 浏览: 96108 次
- 性别:
文章分类
- 全部博客 (151)
- Spring-MVC学习 (5)
- 偶然间发现 (2)
- easyUi学习 (7)
- web项目相关技术 (4)
- java学习 (26)
- webService (4)
- 一些工具的安装使用 (7)
- js学习 (20)
- Sping学习 (7)
- mybatis学习 (5)
- 定时器 (4)
- oracle (2)
- JSP学习 (6)
- HTML一些标签 (1)
- web服务 (2)
- 偶尔得到的地址 (2)
- 常用的代码记录 (2)
- 设计模式 (1)
- java常使用的开源API (1)
- maven (1)
- Socket (1)
- nginx (2)
- jquery (3)
- poi (2)
- 写过的工具类 (19)
- 微信开发 (2)
- mysql (1)
- freemarker (2)
- ftp (1)
- 用过的软件 (1)
- jconsole (1)
- log4j (1)
- redis的简单入门使用 java调用redis (0)
- redis的使用 (2)
- 生活相关的 (1)
最新评论
-
chokee:
...
easyUi学习之开启行编辑模式增删改操作 -
lijie_insist:
就是有的界面需要显示天气啊!所以你要调用天气的接口啊 因为很多 ...
免费的天气接口的一个demo -
zhglance:
请问这是干什么用的呢?
免费的天气接口的一个demo
// 对于word和excell的不同操作,可以只需要上传部分的jar,操作excell上传的jar比较多
package com.zte.xh.fund.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; 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.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; import com.mysql.jdbc.StringUtils; /** * 读取excell的工具类 * * @author Jay_Lee * */ public class ExcellUtil { private static XSSFWorkbook xssfWorkbook; private static HSSFWorkbook hssfWorkbook; /** * 向外提供的调用接口,根据后缀名判断不同的excell文件调用不同方法 * * @param path * @throws IOException */ public static List<Map<String, String>> startRead(String path) throws IOException { String fileType = path.substring(path.lastIndexOf(".") + 1, path.length()); List<Map<String, String>> result = new ArrayList<Map<String, String>>(); if (fileType.equalsIgnoreCase("XLSX")) { result = readXlsx(path, findXlsxStartEnd(path)); } else { result = readXls(path, findXlsStartEnd(path)); } return result; } /** * 找到xls文件的excell中有效数据的起始位置 * * @param path * @throws IOException */ private static Map<String, Integer> findXlsStartEnd(String path) throws IOException { InputStream is = new FileInputStream("path"); hssfWorkbook = new HSSFWorkbook(is); Map<String, Integer> resultNum = new HashMap<String, Integer>(); // 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null) { continue; } // 循环行Row for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow == null) { continue; } // 循环列Cell for (int cellNum = 0; cellNum <= hssfRow.getLastCellNum(); cellNum++) { HSSFCell hssfCell = hssfRow.getCell(cellNum); if (hssfCell == null) { continue; } String value = getValueHssf(hssfCell).trim(); // 如果这里读取出了账号,那么记录它的cell在每行的位置,以后直接读取下一行的此处 if (value.equals("账号")) { resultNum.put("startRow", rowNum + 1); resultNum.put("startCell", cellNum); } else if (value.equals("说明")) { resultNum.put("endCell", cellNum); return resultNum; } } } } return null; } /** * 读取xls的excell文件 * * @param path * @return * @throws IOException */ private static List<Map<String, String>> readXls(String path, Map startMap) throws IOException { List<Map<String, String>> accounts = new ArrayList<Map<String, String>>(); Map<String, String> tempMap = null; int startRow = (int) startMap.get("startRow"); int startCell = (int) startMap.get("startCell"); int endCell = (int) startMap.get("endCell"); InputStream is = new FileInputStream("path"); hssfWorkbook = new HSSFWorkbook(is); Map<String, Integer> resultNum = new HashMap<String, Integer>(); // 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null) { continue; } // 循环行Row for (int rowNum = startRow; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow == null) { continue; } tempMap = new HashMap<String, String>(); // 循环列Cell for (int cellNum = startCell; cellNum <= endCell; cellNum++) { HSSFCell hssfCell = hssfRow.getCell(cellNum); String value = getValueHssf(hssfCell).trim(); tempMap.put(String.valueOf(cellNum), StringUtils.isNullOrEmpty(value) ? "" : value); } accounts.add(tempMap); } } return accounts; } /** * 读取cell中的不同类型的数据 * * @param hssfCell * @return */ private static String getValueHssf(HSSFCell hssfCell) { if (hssfCell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == Cell.CELL_TYPE_NUMERIC) { return String.valueOf(hssfCell.getNumericCellValue()); } else { return String.valueOf(hssfCell.getStringCellValue()); } } /** * 找到Xlsx文件的excell中有效数据的起始位置 * * @param path * @return * @throws IOException */ private static Map<String, Integer> findXlsxStartEnd(String path) throws IOException { xssfWorkbook = new XSSFWorkbook(path); Map<String, Integer> resultNum = new HashMap<String, Integer>(); // 循环工作表Sheet for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // 循环行Row for (int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) { continue; } // 循环列Cell for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) { XSSFCell xssfCell = xssfRow.getCell(cellNum); if (xssfCell == null) { continue; } String value = getValueXssf(xssfCell).trim(); // 如果这里读取出了账号,那么记录它的cell在每行的位置,以后直接读取下一行的此处 if (value.equals("账号")) { resultNum.put("startRow", rowNum + 1); resultNum.put("startCell", cellNum); } else if (value.equals("说明")) { resultNum.put("endCell", cellNum); return resultNum; } } } } return null; } /** * 通过起始位置读取xlsx中的数据 * * @param path * @param startMap * @return * @throws IOException */ private static List<Map<String, String>> readXlsx(String path, Map startMap) throws IOException { List<Map<String, String>> accounts = new ArrayList<Map<String, String>>(); Map<String, String> tempMap = null; InputStream is = new FileInputStream(path); xssfWorkbook = new XSSFWorkbook(path); int startRow = (int) startMap.get("startRow"); int startCell = (int) startMap.get("startCell"); int endCell = (int) startMap.get("endCell"); // 循环工作表Sheet // 循环工作表Sheet for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // 循环行Row for (int rowNum = startRow; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) { continue; } tempMap = new HashMap<String, String>(); // 循环列Cell for (int cellNum = startCell; cellNum <= endCell; cellNum++) { XSSFCell xssfCell = xssfRow.getCell(cellNum); String value = getValueXssf(xssfCell).trim(); tempMap.put(String.valueOf(cellNum), StringUtils.isNullOrEmpty(value) ? "" : value); } accounts.add(tempMap); } } return accounts; } @SuppressWarnings("static-access") private static String getValueXssf(XSSFCell xssfCell) { if (xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN) { return String.valueOf(xssfCell.getBooleanCellValue()); } else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) { return String.valueOf(xssfCell.getNumericCellValue()); } else { return String.valueOf(xssfCell.getStringCellValue()); } } /** * 从Excel中读取管理员信息的格式化方法 * * @param xssfCell * @return */ @SuppressWarnings("static-access") public static String getValueXssfFormat(XSSFCell xssfCell) { DecimalFormat df2 = new DecimalFormat("#"); if (xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN) { return String.valueOf(xssfCell.getBooleanCellValue()); } else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) { return String.valueOf(df2.format(xssfCell.getNumericCellValue())); } else { return String.valueOf(xssfCell.getStringCellValue()); } } /** * 从Excel中读取管理员信息 * * @param path * @return * @throws IOException */ public static List<String> readXlsxFormat(String path) throws IOException { List<String> list = new ArrayList<String>(); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(path); // 循环工作表Sheet for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // 循环行Row for (int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) { continue; } // 循环列Cell for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) { XSSFCell xssfCell = xssfRow.getCell(cellNum); if (xssfCell == null) { continue; } list.add(getValueXssfFormat(xssfCell)); System.out.print(" " + getValueXssfFormat(xssfCell)); } System.out.println(); } } return list; } /** * 测试方法 * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String path = "f:" + File.separator + "checkAccount.xlsx"; List<Map<String, String>> lists = startRead(path); Map<String, String> tem = lists.get(0); System.out.println(tem.toString()); System.out.println(lists.size()); } }
相关推荐
标题中的“poi操作excel案例”指的是使用Apache POI库来处理Excel文件的示例项目。Apache POI是一个开源的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Excel工作簿(XLS和XLSX)。在这个...
这篇博客文章“POI操作Excel常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...
"poi操作excel所需完整jar包"指的是包含了所有必要组件的Apache POI库,这样在导入IDE并添加到构建路径后,就可以避免出现`NoClassDefFoundError`这样的运行时错误。 Apache POI 提供了丰富的API,允许开发者读取、...
Apache POI是一个强大的Java库,专门用于处理...通过lib.rar和Poi02.rar中的示例代码,你可以更深入地了解和学习POI操作Excel的具体实现。在实践中,结合这些资源,你将能够熟练地在Java Web项目中集成Excel处理功能。
标题中的"java通过poi操作excel jar包"指的是使用Apache POI库来处理Excel文件的Java程序,通常需要引入特定版本的POI JAR包。在这个案例中,我们有两个版本的JAR包可供使用:poi_3.17.jar和poi_3.15.jar。这些版本...
在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...
这个"poi操作excel的Demo"很可能是提供了一个使用Apache POI库来读取、写入或修改Excel文件的示例代码。下面将详细介绍Apache POI在处理Excel时的一些关键知识点。 1. **Apache POI概述**: Apache POI 是Java平台...
在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...
二、Java POI操作Excel的核心功能 1. 创建新的Excel工作簿 使用`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,然后通过工作簿对象创建工作表。 2. 读取Excel工作簿 同样,使用`WorkbookFactory....
poi操作excel所需jar包及poi源码 包含内容 poi-3.7.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar poi-scratchpad-3.7.jar Lib-->commons-logging-1.1.jar lib-->junit-3.8.1.jar lib-->log4j.1.2.13.jar ooxml-...
"poi操作Excel文件jar包"指的是包含Apache POI库的Java归档(JAR)文件,可以集成到Java项目中以实现Excel文件的处理功能。 1. **Apache POI 简介** Apache POI 是Apache软件基金会的一个顶级项目,最初由Markus ...
接下来,我们将讨论如何使用Apache POI操作Excel 2007(.xlsx)文件的主要步骤: 1. **创建Workbook对象**:这是Excel工作簿的Java表示。你可以使用`XSSFWorkbook`类来创建一个新的Excel工作簿。 ```java import...
这个“POI操作excel的JAR包”是Apache POI项目的一部分,它提供了一系列API,使得Java开发者可以方便地创建、读取、修改Excel电子表格。 在Java开发中,使用Apache POI库可以实现以下功能: 1. **创建Excel工作簿*...
"poi操作excel全部jar包"指的是使用Apache POI进行Excel操作所需的所有库文件集合,通常包含多个JAR文件,每个文件服务于不同的功能模块。 Apache POI 主要分为三个部分: 1. **HSSF**: 这是处理Microsoft Excel的...
Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。
使用POI操作Excel调用高德地图API操作Excel示例
"poi操作excel的jar包集.rar"文件包含了运行Apache POI库所需的全部依赖,让你能够无缝进行Excel文件的操作,无论是2003的老版本还是2007及以后的新版本。 首先,我们需要理解Apache POI的主要组件: 1. **HSSF...
这个"POI操作Excel总结实例"的资料可能包含了一系列示例代码,教你如何利用Apache POI库来读取、写入和操作Excel文件。下面,我将详细讲解关于POI操作Excel的一些关键知识点。 1. **创建Excel工作簿(Workbook)** ...
在这个场景中,我们关注的是如何使用 POI 操作 Excel 工具类。这个工具类可以帮助开发者在 Java 环境下读写 Excel 文件,从而实现数据导入、导出等功能。下面将详细介绍 POI 操作 Excel 的关键知识点。 1. **工作簿...