`

java读取Excel文档

阅读更多
package cn.ccb.odsbsx.common.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelReader {

// 创建文件输入流
private BufferedReader reader = null;

// 文件类型
private String filetype;

// 文件二进制输入流
private InputStream is = null;

// 当前的Sheet
private int currSheet;

// 当前位置
private int currPosition;

// Sheet数量
private int numOfSheets;

// HSSFWorkbook
HSSFWorkbook workbook = null;

// 设置Cell之间以空格分割
private static String EXCEL_LINE_DELIMITER = " ";

// 设置最大列数
private static int MAX_EXCEL_COLUMNS = 64;

private static File[] getFiles(String path) {
File file = new File(path);
// get the folder list
File[] array = file.listFiles();
return array;
}

public static void main(String[] args) throws IOException {
// TODO code application logic here
File[] files = getFiles("D:\\data\\");
for (int i = 0; i < files.length; i++) {
String filePath = files[i].getPath();
String fileName = files[i].getName();
String newFileName = fileName.substring(0, fileName.indexOf('.'));
String s = "";
try {
ExcelReader er = new ExcelReader(filePath);
String line = er.readLine();
while (line != null) {
s = s + line + "\r\n";
line = er.readLine();
}

er.close();

} catch (Exception e) {

e.printStackTrace();

}
// System.out.println(s);
File newFile = new File("D:\\backupfile\\" + newFileName + ".txt");
FileOutputStream fops = new FileOutputStream(newFile);
fops.write(s.getBytes());
}
}



// 构造函数创建一个ExcelReader
public ExcelReader(String inputfile) throws IOException, Exception {
// 判断参数是否为空或没有意义
if (inputfile == null || inputfile.trim().equals("")) {
throw new IOException("no input file specified");
}
// 取得文件名的后缀名赋值给filetype
this.filetype = inputfile.substring(inputfile.lastIndexOf(".") + 1);
// 设置开始行为0
currPosition = 0;
// 设置当前位置为0
currSheet = 0;
// 创建文件输入流
is = new FileInputStream(inputfile);
// 判断文件格式
if (filetype.equalsIgnoreCase("xls")) {
// 如果是Excel文件则创建HSSFWorkbook读取
workbook = new HSSFWorkbook(is);
// 设置Sheet数
numOfSheets = workbook.getNumberOfSheets();
} else {
throw new Exception("File Type Not Supported");
}
}

// 函数readLine读取文件的一行
public String readLine() throws IOException {
// 如果是XLS文件则通过POI提供的API读取文件
if (filetype.equalsIgnoreCase("xls")) {
// 根据currSheet值获得当前的sheet
HSSFSheet sheet = workbook.getSheetAt(currSheet);
// 判断当前行是否到但前Sheet的结尾
// System.out.println(sheet.getLastRowNum());
if (currPosition > sheet.getLastRowNum()) {
// 当前行位置清零
currPosition = 0;
// 判断是否还有Sheet
if (currSheet != numOfSheets - 1) {
currSheet++;
// 得到下一张Sheet
sheet = workbook.getSheetAt(currSheet);
} else {
return null;
}
}
// 获取当前行数
int row = currPosition;
currPosition++;
// 读取当前行数据
return getLine(sheet, row);
}
return null;
}

// 函数getLine返回Sheet的一行数据

private String getLine(HSSFSheet sheet, int row) {

// 根据行数取得Sheet的一行

HSSFRow rowline = sheet.getRow(row);

// 创建字符创缓冲区

StringBuffer buffer = new StringBuffer();

// 获取当前行的列数
int filledColumns;
try {
filledColumns = rowline.getLastCellNum();
} catch (NullPointerException e) {
return "";
}
HSSFCell cell = null;
// 循环遍历所有列
for (int i = 0; i < filledColumns; i++) {
// 取得当前Cell
cell = rowline.getCell((short) i);
String cellvalue = null;
if (cell != null) {
// 判断当前Cell的Type
switch (cell.getCellType()) {
// 如果当前Cell的Type为NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC: {
// 判断当前的cell是否为Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是Date类型则,取得该Cell的Date值
Date date = cell.getDateCellValue();
// 把Date转换成本地格式的字符串
cellvalue = cell.getDateCellValue().toString();
}
// 如果是纯数字
else {
// 取得当前Cell的数值
Integer num = new Integer((int) cell
.getNumericCellValue());
cellvalue = String.valueOf(num);
}
break;
}
// 如果当前Cell的Type为STRIN
case HSSFCell.CELL_TYPE_STRING:
// 取得当前的Cell字符串
cellvalue = cell.getRichStringCellValue().toString()
.replaceAll("'", "''");
break;
// 默认的Cell值
default:
cellvalue = "";
}
} else {
cellvalue = "";
}
// 在每个字段之间插入分割符
buffer.append(cellvalue).append(EXCEL_LINE_DELIMITER);
}
// 以字符串返回该行的数据
return buffer.toString();
}

// close函数执行流的关闭操作
public void close() {
// 如果is不为空,则关闭InputSteam文件输入流
if (is != null) {
try {
is.close();
} catch (IOException e) {
is = null;
}
}
// 如果reader不为空则关闭BufferedReader文件输入流
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
reader = null;
}
}
}
}
分享到:
评论

相关推荐

    java读取excel文件

    Java 读取 Excel 文件 Java 读取 Excel 文件是指使用 Java 语言从 Excel 文件中读取数据,并对其进行处理的过程。下面将详细介绍 Java 读取 Excel 文件的过程和相关知识点。 Java 读取 Excel 文件的步骤 1. 导入...

    java读取excel文件生成矩阵

    在Java编程中,读取...以上就是使用Java读取Excel文件生成矩阵的基本步骤。实际开发中,你可能还需要处理更多细节,如异常处理、数据验证、优化性能等。希望这个介绍能帮助你理解这个过程,并在实际项目中灵活应用。

    java 读取Excel文件中的内容

    在Java编程中,读取Excel文件的内容是一项常见的任务,尤其在数据处理、报表生成或数据分析等领域。Excel文件通常包含表格数据,而Java提供多种库来处理这类任务,比如Apache POI、JExcelApi和OpenCSV等。本篇将重点...

    Java读取Excel文件的内容

    总结来说,使用Java和Apache POI框架读取Excel文件的内容主要包括以下几个步骤: 1. 引入Apache POI依赖。 2. 创建`FileInputStream`,加载Excel文件到`Workbook`对象。 3. 从`Workbook`中获取`Sheet`对象。 4. 遍历...

    poi.zip java读取excel文件

    Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...

    java读取excel数据导入数据库源码

    java读取excel数据导入数据库源码 java读取excel数据导入数据库源码

    完美解决java读取excel内存溢出问题.rar

    总结来说,解决Java读取Excel内存溢出问题,关键在于合理利用资源、优化代码逻辑以及选择适合的API,如Apache POI的SXSSF。通过这些方法,我们可以在不显著增加系统资源负担的情况下,高效地处理大Excel文件。

    java读取excel文件jar包20181223

    Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...

    Java读取Excel文件所需Jar包

    标题“Java读取Excel文件所需Jar包”表明我们将讨论如何在Java环境中使用这些库来读取Excel(xls、xlsx)文件。描述中提到的“Jar包”是指Java Archive,它是Java程序的可执行文件格式,包含了类文件和其他资源。 ...

    基于POI的java读取excel文件,通用类

    本教程将深入探讨如何使用基于Apache POI的Java代码来读取Excel文件。 一、Apache POI介绍 Apache POI是Apache软件基金会的一个开源项目,它的主要目标是提供一套API,使Java程序员能够创建、修改和显示Microsoft ...

    java读取excl文件内容进行mysql自动创建表

    本篇将深入探讨如何利用Java读取Excel文件内容,并自动根据这些内容在MySQL数据库中创建相应的表。 首先,我们需要了解Java中用于读取Excel文件的库。Apache POI是一个流行的选择,它提供了对Microsoft Office格式...

    java 读取Excel文件

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。这篇博客“java 读取Excel文件”可能介绍了一些方法来处理Excel数据。下面,我们将详细探讨如何使用Java来读取Excel...

    java读取excel

    "Java 读取 Excel 文件" Java 读取 Excel 文件是 Java 语言中常见的操作之一,通过使用 Apache POI 库,可以轻松地读取 Excel 文件中的数据。本文将通过 ReadExcelUtil 工具类,详细介绍如何读取 Excel 文件。 ...

    java读取Excel文件-jxl

    java读取Excel文件-jxl附件列表: ReadAndWriteExcel.java (5.52 KB) jxl.jar (688.03 KB) jxl读Excel文件.doc (88.50 KB)

    Java读取Excel文件jar

    Java读取xls、CSV、xlsx文件所用到的jar包,包括: dom4j-1.6.1.jar geronimo-stax-api_1.0_spec-1.0.jar opencsv-2.3.jar poi-3.7-20101029.jar poi-examples-3.7-20101029.jar poi-ooxml-3.7-20101029.jar poi-...

    Java读取Excel文件

    java使用的jpoi读取execl文件 该资源含有最新的poi的jar包 可以用来读取execlxls xlsx两种格式 里面含有代码可以直接运行

    java读取Excel文件

    java读取Excel文件 ,可用于安卓开发,将Excel文件导入安卓的数据库中。

    java读取excel文件,并绘制统计图分析excel内的成绩分布情况

    以上步骤将帮助你完成Java读取Excel文件以及绘制成绩分布统计图的基本操作。在这个过程中,你可能还需要处理不同类型的单元格(数值、字符串等),对数据进行排序和分组,以及自定义图表的样式和颜色。通过不断实践...

Global site tag (gtag.js) - Google Analytics