package org.cric.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
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.poifs.filesystem.POIFSFileSystem;
public class ExcelReader {
private POIFSFileSystem fs;
private HSSFWorkbook wb;
private HSSFSheet sheet;
private HSSFRow row;
private FileInputStream input;
private String[] excleTitle;
public String[] readExcelTitle(String excelPath) {// 读取Excel表格表头的内容
try {
input = new FileInputStream(new File(excelPath));// excelPath,Excel
// 文件 的绝对路径
fs = new POIFSFileSystem(input);
wb = new HSSFWorkbook(fs);
sheet = wb.getSheetAt(0);
row = sheet.getRow(0);// 得到标题的内容对象。
int colNum = row.getPhysicalNumberOfCells(); // 得到标题总列数
excleTitle = new String[colNum];
for (int i = 0; i < colNum; i++) {
excleTitle[i] = getStringCellValue(row.getCell((short) i));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (input != null) {
input.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return excleTitle;
}
public Map<Integer, String> readExcelContent(String excelPath) {// 读取Excel数据内容
Map<Integer, String> content = new HashMap<Integer, String>();
String excelStr = "";// excel 内容
try {
input = new FileInputStream(new File(excelPath));
fs = new POIFSFileSystem(input);
wb = new HSSFWorkbook(fs);
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;
while (j < colNum) {
excelStr += getStringCellValue(row.getCell((short) j)).trim()+ "&";
j++;
}
content.put(i, excelStr);
excelStr = "";
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (input != null) {
input.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return content;
}
private String getStringCellValue(HSSFCell cell) {// 获取单元格数据内容为字符串类型的数据
String strCell = "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
strCell = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
strCell = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
strCell = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
strCell = "";
break;
default:
strCell = "";
break;
}
if (strCell.equals("") || strCell == null) {
return "";
}
if (cell == null) {
return "";
}
return strCell;
}
private String getDateCellValue(HSSFCell cell) {// 获取单元格数据内容为日期类型的数据
String result = "";
try {
int cellType = cell.getCellType();
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
Date date = cell.getDateCellValue();
result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)
+ "-" + date.getDate();
} else if (cellType == HSSFCell.CELL_TYPE_STRING) {
String date = getStringCellValue(cell);
result = date.replaceAll("[年月]", "-").replace("日", "").trim();
} else if (cellType == HSSFCell.CELL_TYPE_BLANK) {
result = "";
}
} catch (Exception e) {
System.out.println("日期格式不正确!");
e.printStackTrace();
}
return result;
}
}
package org.cric.action;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
public class ExcelReaderTest {
public static void main(String[] args) {
ExcelReader excelReader = new ExcelReader();
String excelPath = new String("E:\\报表.xls");
String[] headers = excelReader.readExcelTitle(excelPath);
for(int i = 0; i < headers.length; i++){
System.out.print(headers[i]+"\t");
if(i == headers.length-1){
System.out.println();
}
}
System.out.println("--------------------------------------------------");
Map<Integer,String> content = excelReader.readExcelContent(excelPath);
Collection<String> collection = content.values();
Iterator<String> it = collection.iterator();
while(it.hasNext()){
String value = it.next();
String[] cellValue = value.split("&");
for(int i = 0; i < cellValue.length; i++){
System.out.print(cellValue[i]+"\t");
if(i == cellValue.length-1){
System.out.println();
}
}
System.out.println("--------------------------------------------------");
}
}
}
分享到:
相关推荐
apache poi 读取 Excel 的 jar 包 博文链接:https://wxinpeng.iteye.com/blog/231895
本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...
这篇博文主要讲解如何使用Apache POI库来读取Excel文件的内容,无论是2003版的.XLS还是2007版及以后的.XLSX格式。 在Java编程中,Apache POI 提供了丰富的API,使得开发者可以方便地操作Excel文件。首先,我们需要...
以上就是使用Apache POI读取Excel数据并写入Word的基本流程。在实际应用中,你可能需要处理更复杂的情况,比如合并单元格、处理公式、格式转换等,这都需要对POI API有更深入的理解。同时,为了提高性能,可以考虑...
3. **读取Excel文件** - 使用`WorkbookFactory`创建`Workbook`对象,这可以是HSSFWorkbook(HSSF)或XSSFWorkbook(XSSF)。 - 通过`Workbook`获取`Sheet`对象,表示工作表。 - `Sheet`中包含多个`Row`,每个`Row...
标题提到的"poi读取excel文件",指的是使用Apache POI库来处理Excel数据。在最新的版本中,POI引入了更高效和强大的功能,使得处理Excel文件变得更加方便。 描述中提到了"最新版poi相关的6个jar包",这些jar包是...
本篇将详细讲解如何使用Apache POI读取Excel文件中的带格式数据。 首先,理解Apache POI的基本架构至关重要。POI提供了HSSF(Horrible Spreadsheet Format)用于处理老版本的.xls文件,而XSSF用于处理较新的.xlsx...
标题中的"poi读取excel的jar包"指的是Apache POI库的一个版本,它包含了读取Excel 2007文件所需的类和方法。在Java程序中,引入这个jar包后,开发者可以编写代码来处理.xlsx文件,无论是读取数据、解析工作表还是...
本教程将详细讲解如何使用Apache POI库来读取Excel文件的内容。 首先,为了在Java项目中使用Apache POI,我们需要通过Maven进行依赖管理。在`pom.xml`文件中添加以下依赖: ```xml <groupId>org.apache.poi ...
Java 使用 Apache POI 读取 Excel 是一个常见的任务,在处理数据导入、导出或数据分析时非常有用。Apache POI 是一个流行的开源库,它允许 Java 开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 ...
3. 使用Apache POI读取Excel:下面的代码展示了如何打开Excel文件并读取数据: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import ...
Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本案例中,我们将关注如何使用Apache POI来读取Word文档的内容,并将其以流的形式返回到Web应用程序的前端...
在Java环境中,Apache POI 提供了一套API,使得开发者能够创建、修改和读取Excel文件。这个压缩包包含了Apache POI库的多个版本及其依赖库,如ooxml-schemas、xmlbeans等,用于支持对Excel文件的OOXML(Office Open ...
Java 使用 Apache POI 读取 Excel 文件是一种常见的数据处理任务,尤其在数据分析、报表生成以及自动化测试等场景中。Apache POI 是一个流行的开源库,它允许开发者在 Java 应用程序中创建、修改和显示 Microsoft ...
在Android平台上,使用Apache POI库来读取Excel文件是一种常见的解决方案。Apache POI是一个流行的开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在这个“android ...
Apache POI 是一个开源项目,专门用于...通过以上介绍,你应该已经掌握了使用 Apache POI 读取 Excel 文件的基本方法和一些高级特性。在实际开发中,根据具体需求进行灵活运用,可以实现复杂的 Excel 数据处理任务。
在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...
标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...