最近要根据 excel导入数据到数据库,需要读取 excel 的内容。之前很久之前用过 jxl 和 poi 两大操作 excel 的 java 库,代码早丢了。今天从网上临时找到一段代码,可用。放在这里记录一下,以备后用。
代码的来源地址: http://blog.csdn.net/superdog007/article/details/48338337
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; 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; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 读取Excel * * @author zengwendong */ public class ReadExcelUtils { private Logger logger = LoggerFactory.getLogger(ReadExcelUtils.class); private Workbook wb; private Sheet sheet; private Row row; public ReadExcelUtils(String filepath) { if(filepath==null){ return; } String ext = filepath.substring(filepath.lastIndexOf(".")); try { InputStream is = new FileInputStream(filepath); if(".xls".equals(ext)){ wb = new HSSFWorkbook(is); }else if(".xlsx".equals(ext)){ wb = new XSSFWorkbook(is); }else{ wb=null; } } catch (FileNotFoundException e) { logger.error("FileNotFoundException", e); } catch (IOException e) { logger.error("IOException", e); } } /** * 读取Excel表格表头的内容 * * @param InputStream * @return String 表头内容的数组 * @author zengwendong */ public String[] readExcelTitle() throws Exception{ if(wb==null){ throw new Exception("Workbook对象为空!"); } sheet = wb.getSheetAt(0); row = sheet.getRow(0); // 标题总列数 int colNum = row.getPhysicalNumberOfCells(); System.out.println("colNum:" + colNum); String[] title = new String[colNum]; for (int i = 0; i < colNum; i++) { // title[i] = getStringCellValue(row.getCell((short) i)); title[i] = row.getCell(i).getCellFormula(); } return title; } /** * 读取Excel数据内容 * * @param InputStream * @return Map 包含单元格数据内容的Map对象 * @author zengwendong */ public Map<Integer, Map<Integer,Object>> readExcelContent() throws Exception{ if(wb==null){ throw new Exception("Workbook对象为空!"); } Map<Integer, Map<Integer,Object>> content = new HashMap<Integer, Map<Integer,Object>>(); sheet = wb.getSheetAt(0); // 得到总行数 int rowNum = sheet.getLastRowNum(); row = sheet.getRow(0); int colNum = row.getPhysicalNumberOfCells(); // 正文内容应该从第二行开始,第一行为表头的标题 for (int i = 1; i <= rowNum; i++) { row = sheet.getRow(i); int j = 0; Map<Integer,Object> cellValue = new HashMap<Integer, Object>(); while (j < colNum) { Object obj = getCellFormatValue(row.getCell(j)); cellValue.put(j, obj); j++; } content.put(i, cellValue); } return content; } /** * * 根据Cell类型设置数据 * * @param cell * @return * @author zengwendong */ private Object getCellFormatValue(Cell cell) { Object cellvalue = ""; if (cell != null) { // 判断当前Cell的Type switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC:// 如果当前Cell的Type为NUMERIC case Cell.CELL_TYPE_FORMULA: { // 判断当前的cell是否为Date if (DateUtil.isCellDateFormatted(cell)) { // 如果是Date类型则,转化为Data格式 // data格式是带时分秒的:2013-7-10 0:00:00 // cellvalue = cell.getDateCellValue().toLocaleString(); // data格式是不带带时分秒的:2013-7-10 Date date = cell.getDateCellValue(); cellvalue = date; } else {// 如果是纯数字 // 取得当前Cell的数值 cellvalue = String.valueOf(cell.getNumericCellValue()); } break; } case Cell.CELL_TYPE_STRING:// 如果当前Cell的Type为STRING // 取得当前的Cell字符串 cellvalue = cell.getRichStringCellValue().getString(); break; default:// 默认的Cell值 cellvalue = ""; } } else { cellvalue = ""; } return cellvalue; } public static void main(String[] args) { try { String filepath = "F:test.xls"; ReadExcelUtils excelReader = new ReadExcelUtils(filepath); // 对读取Excel表格标题测试 // String[] title = excelReader.readExcelTitle(); // System.out.println("获得Excel表格的标题:"); // for (String s : title) { // System.out.print(s + " "); // } // 对读取Excel表格内容测试 Map<Integer, Map<Integer,Object>> map = excelReader.readExcelContent(); System.out.println("获得Excel表格的内容:"); for (int i = 1; i <= map.size(); i++) { System.out.println(map.get(i)); } } catch (FileNotFoundException e) { System.out.println("未找到指定路径的文件!"); e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } } }
依赖2个 jar,分别是:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency>
相关推荐
C# EXCEL(.xls和.xlsx)导入到数据库 C# EXCEL(.xls和.xlsx)导入到数据库是指将Excel文件中的数据导入到数据库中,以便于后续的数据处理和分析。下面是实现C# EXCEL(.xls和.xlsx)导入到数据库的步骤和关键技术点: ...
它们可能被xls2dbf.exe这个可执行程序调用,用于读取Excel文件并将其内容保存到DBF文件中。 在使用"excel(.xls,xlsx)转.dbf工具"时,用户可能需要以下步骤: 1. 下载并安装该工具,确保所有依赖项(如VFP的相关DLL...
//C# 读取Excel文件、C#读取xls文件、C#读取xlsx文件、C#读取csv文件 //C# 将xls文件转换为DataTable、C#将xlsx文件转换为DataTable //C#将csv文件转换为DataTable //C#将txt文件转换为DataTable(列与列之间空格隔...
JAVA读取excel文件源代码。可以传入文件的 开始行,结束行,sheet页名称,开始列,结束列,读取文件,返回List, Object>>类型和List;Object>>类型,List, Object>>需要传入对应的key字符串,然后用“;”进行...
在这个"POI读写excel(.xls/.xlsx)的Demo"中,我们将深入探讨如何使用Apache POI库在Java中读取和写入Excel文件。 1. **Apache POI库介绍** Apache POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML ...
总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...
"C# Excel格式转换,xls转换成xlsx,不依赖Excel,不依赖office"这个主题涉及了如何在C#环境中,利用第三方库进行Excel文件格式的转换,而无需安装Microsoft Office或者Excel。这种方式的优点在于,它使得应用程序...
在Java编程中,读取本地的.xls和.xlsx文件通常涉及到数据处理、数据分析或者报表生成等场景。这些文件格式是Microsoft Excel用于存储表格数据的标准格式,.xls是早期版本的Excel文件,而.xlsx则是较新的XML格式,...
1. **读取Excel文件**:使用`XSSFWorkbook`类(针对.xlsx文件)或`HSSFWorkbook`类(针对.xls文件)打开Excel文件。例如: ```java File excelFile = new File("path_to_your_excel_file"); FileInputStream fis ...
在本文中,我们将深入探讨如何使用POI库中的HSSF和XSSF组件来读取和写入Excel文件,这两种组件分别用于处理.xls(97-2003版Excel格式)和.xlsx(2007及更高版本的Office Open XML格式)。 首先,让我们了解HSSF...
"poi 读取.xls与.xlsx需要的jar"这个标题暗示了我们主要讨论的是如何配置Apache POI库来处理这两种不同版本的Excel文件。 首先,.xls是Excel 97-2003使用的文件格式,而.xlsx是Excel 2007及以后版本采用的新XML格式...
JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法:https://blog.csdn.net/qq_38161040/article/details/118678016
通常,这样的示例会包括如何加载库,如何读取Excel文件(可能通过File API或者URL),如何处理数据,以及如何将数据写回新的Excel文件。 在实际应用中,"xlsx.full.min.js" 使用了逗号分隔值(CSV)、JSON等格式来与...
6. **读取数据**:通过遍历工作表的行和列,可以读取Excel文件中的数据。使用`GetRow`方法获取特定行,再用`GetCell`方法获取特定单元格。 7. **样式与格式**:NPOI提供了对字体、颜色、边框、对齐方式等多种样式...
Spire.XLS是一款全面的.NET Excel组件,而Spire.XLS.Free是其免费版,提供了基本的Excel处理功能,包括创建、读取、写入和修改Excel文件。在这个特定的版本2.2.0中,开发者可以利用它来实现一些核心的Excel操作,...
- **读写操作**:支持读取XLS、XLSX、XLSM、XLTX、XLTM等格式,以及写入新的Excel文件。 - **数据处理**:可以进行单元格的数据填充、排序、查找替换、数据验证等操作。 - **图表与图形**:创建、编辑和格式化...
xlsx.full.min.js是XLSX.js库的一个压缩版本,XLSX.js是一个开源的JavaScript库,专门用于处理Microsoft Excel格式的文件,包括XLS、XLSX和CSV等。通过这个库,开发者可以轻松地在前端实现Excel文件的解析、操作和...
在IT行业中,尤其是在Web开发领域,常常需要处理各种类型的文件,如PDF、Word文档(.doc/.docx)、Excel表格(.xls/.xlsx)以及PowerPoint演示文稿(.ppt/.pptx)。这些文件格式广泛应用于日常工作和学习,因此提供...
此外,值得注意的是,JXL库只支持.xls格式的文件,对于.xlsx格式的Excel文件,你可能需要使用Apache POI或其他兼容新版本Excel格式的库。尽管如此,JXL库在处理旧版Excel文件时依然非常实用,特别是在资源有限的项目...
使用poi将xls格式的Excel转为xlsx,文件中的所有样式都可以完美转换,例如合并栏、背景和单元格样式等。Java源码