`
mr.lili
  • 浏览: 152396 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类

java 利用apache的 poi技术库读取excel数据

 
阅读更多
package com.csidc.as.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
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;
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;

public class ReadExcel {
/**
* 对外提供读取excel 的方法
* */
public static List<List<Object>> readExcel(File file,String fileName) throws Exception {
// String fileName = file.getName();
String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName
.substring(fileName.lastIndexOf(".") + 1);
if ("xls".equalsIgnoreCase(extension)) {
return read2003Excel(file);
} /*else if ("xlsx".equalsIgnoreCase(extension)) {
//return read2007Excel(file);
} */else {
throw new IOException("不支持的文件类型");
}
}

/**
* 读取 office 2003 excel
*
* @throws IOException
* @throws FileNotFoundException
*/
private static List<List<Object>> read2003Excel(File file)
throws IOException {

DecimalFormat df = new DecimalFormat("0");// 格式化 number String 字符 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串 
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字 

List<List<Object>> list = new LinkedList<List<Object>>();//存行值
HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = hwb.getSheetAt(0);//第一个工作薄
Object value = null;//值
HSSFRow row = null;//行
HSSFCell cell = null;//列

//循环行
for (int i = sheet.getFirstRowNum()+1; i <= sheet
.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
if (row == null) {
continue;
}
List<Object> linked = new LinkedList<Object>();////存列值

//循环列
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);//获得列
if (cell == null) {
linked.add("");//存列值
continue;
}

switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:
// System.out.println(i + "行" + j + " 列 is String type  字符串类型");
value = cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
// System.out.println(i + "行" + j
// + " 列 is Number type ; DateFormt:"
// + cell.getCellStyle().getDataFormatString());

if ("@".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("General".equals(cell.getCellStyle()
.getDataFormatString())) {
value = nf.format(cell.getNumericCellValue());
} else {
value = sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
// System.out.println(i + "行" + j + " 列 is Boolean type");
value = cell.getBooleanCellValue();
break;
case XSSFCell.CELL_TYPE_BLANK:
// System.out.println(i + "行" + j + " 列 is Blank type");
value = "";
break;
default:
// System.out.println(i + "行" + j + " 列 is default type");
value = cell.toString();
}
if (value == null || "".equals(value)) {
continue;
}
linked.add(value);//存列值
}
list.add(linked);//存行值
}
return list;
}

/**
* 读取Office 2007 excel
* */
private static List<List<Object>> read2007Excel(File file)
throws IOException {
List<List<Object>> list = new LinkedList<List<Object>>();
// 构造 XSSFWorkbook 对象,strPath 传入文件路径
XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
// 读取第一章表格内容
XSSFSheet sheet = xwb.getSheetAt(0);
Object value = null;
XSSFRow row = null;
XSSFCell cell = null;
for (int i = sheet.getFirstRowNum(); i <= sheet
.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
if (row == null) {
continue;
}
List<Object> linked = new LinkedList<Object>();
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);
if (cell == null) {
continue;
}
DecimalFormat df = new DecimalFormat("0");// 格式化 number String
// 字符
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:
System.out.println(i + "行" + j + " 列 is String type");
value = cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
System.out.println(i + "行" + j
+ " 列 is Number type ; DateFormt:"
+ cell.getCellStyle().getDataFormatString());
if ("@".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("General".equals(cell.getCellStyle()
.getDataFormatString())) {
value = nf.format(cell.getNumericCellValue());
} else {
value = sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
System.out.println(i + "行" + j + " 列 is Boolean type");
value = cell.getBooleanCellValue();
break;
case XSSFCell.CELL_TYPE_BLANK:
System.out.println(i + "行" + j + " 列 is Blank type");
value = "";
break;
default:
System.out.println(i + "行" + j + " 列 is default type");
value = cell.toString();
}
if (value == null || "".equals(value)) {
continue;
}
linked.add(value);
}
list.add(linked);
}
return list;
}
}
分享到:
评论

相关推荐

    apache POI文件读写excel

    Apache POI是Java领域中广泛使用的库,专为处理Microsoft Office格式的文件而设计,特别是Excel文档。这个库使得在不依赖Microsoft Office的情况下,开发者能够读取、创建、修改和操作XLS、XLSX等Excel文件。在本文...

    Java 使用poi导入excel 并使用xml做数据验证

    总结来说,这个项目展示了如何利用Java的Apache POI库读取Excel数据,结合XML解析进行数据验证,最后将验证通过的数据导入到数据库。这个过程涉及到文件I/O、XML处理、数据验证、数据库操作等多个核心Java技术,对于...

    java的poi技术读取Excel数据到MySQL

    Java的POI技术是用于处理Microsoft Office文档(如Excel)的一种强大的库,它允许程序员在Java应用程序中创建、修改和读取Excel文件。本实例主要关注如何使用POI技术读取Excel数据并将其存储到MySQL数据库中。这个...

    java利用POI技术上传&导出Excel表格并保存数据至数据库

    本篇文章将深入探讨如何利用POI技术在Java中实现Excel的上传、导出以及将数据保存至数据库。 首先,我们需要了解Apache POI的基本用法。POI提供了HSSF(用于.xls文件)和XSSF(用于.xlsx文件)API,它们允许我们...

    Apache POI 模板导出excel.rar

    综上所述,"Apache POI 模板导出excel.rar"中的内容主要涵盖了使用Apache POI库处理Excel模板,填充数据并导出报表的整个流程,涉及到了文件操作、数据处理、样式控制、性能优化等多个方面的技术知识。通过理解和...

    poi excel 模板读取并导出带公式的excel文档

    - 代码片段展示了如何通过POI库读取模板文件,并填充数据后导出新的Excel文件。 - 使用了`HSSFWorkbook`类来读取模板文件,并对其中的`HSSFSheet`进行了操作。 - 通过循环遍历数据集,动态创建或更新行,并填充...

    Java利用POI实现数据Excel导出实例源码

    总的来说,Java结合Apache POI库实现Excel数据导出是企业级应用中常见的数据处理技术,能够有效地帮助用户处理大量数据,生成报表,或者进行数据交换。通过学习和实践这样的实例源码,开发者可以提高自己在文件操作...

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    标题中的“poi将word、PPT、Excel转pdf实现在线预览的jar包”涉及到的是Apache POI库在Java开发中的应用,以及如何利用它来处理Microsoft Office文档并转换为PDF格式,以便进行在线预览。Apache POI是Java平台上用于...

    使用POI技术读取Excel中数据,比对,并将比对结果存入Excel

    本篇文章将深入探讨如何利用POI技术读取Excel中的数据,进行比对,并将比对结果存储回Excel。 首先,我们需要在项目中引入Apache POI库。通常,通过Maven或Gradle这样的构建工具添加依赖即可: ```xml &lt;!-- Maven ...

    java批量读取Excel表格

    Java批量读取Excel表格是一种常见的数据处理需求,特别是在大数据导入、报表生成或数据分析场景中。在Java中,我们可以借助Apache POI库来实现这一功能。Apache POI是一个强大的开源库,它允许Java开发者读写...

    java poi 读取百万数据OOM优化

    本篇文章将重点讨论如何使用Java的Apache POI库以及两种不同的解决方案——EasyExcel和xlsx-Streamer来高效地读取大量Excel数据,避免OOM。 首先,Apache POI是Java中广泛使用的API,用于读写Microsoft Office格式...

    Java通过POI和JXL给Excel动态添加水印

    本文将详细介绍如何利用Java编程语言结合JXL和Apache POI库来实现给Excel文档添加动态水印的功能。 #### 技术栈介绍 - **JXL**: 是一个用于读写Excel文件的Java库,支持多种Excel版本,包括.xls格式。 - **Apache ...

    poi读取excel并输出到jsp页面

    标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...

    使用java Apache poi 根据word模板生成word报表.rar

    总之,这个项目展示了如何利用Java和Apache POI库将动态数据集成到Word模板中,生成自定义报表。这个技能在企业级应用中非常有用,特别是在需要批量生成报告或自动化文档处理的场景下。通过熟练掌握这一技术,开发者...

    Java读取Excel所需jar包 (poi.jar等)

    本篇文章将详细探讨使用Apache POI读取Excel文件所需的jar包,以及如何在Java项目中集成和使用这些库。 首先,Apache POI的核心jar包是poi-ooxml-schemas和poi-ooxml。这两个jar包提供了对Excel文件的XML Schema...

    java读取excel之xlsl超大文件

    标题"java读取excel之xlsl超大文件"所涉及的核心知识点是优化大量数据的读取策略。在Java中,可以使用Apache POI的SXSSF API(Streaming Usermodel API)来实现这种优化。与常规的XSSF API不同,SXSSF允许我们以流的...

    JAVA_poi读取Excel.pdf

    JAVA POI 是 Apache 的一个子项目,提供了一个纯 Java 的 Excel 解决方案,可以用来读取和写入 Excel 文件。下面是关于 JAVA POI 读取 Excel 的知识点摘要。 POI 简介 POI 是 Apache 的一个子项目,提供了一个纯 ...

    POI实现word和excel在线预览

    本项目提供的"POI实现word和excel在线预览"是基于Apache POI的一个实用工具集,它能够帮助开发者实现在Web环境下对这些文件的在线预览功能,无需用户下载文件到本地即可查看内容,提高了用户体验和数据安全性。...

    java上传并读取excel工具类

    3. **读取Excel文件**: 使用Apache POI,我们可以通过`XSSFWorkbook`(对于.xlsx)或`HSSFWorkbook`(对于.xls)来打开Excel文件。以下是一个简单的示例: ```java Workbook workbook = new XSSFWorkbook(new ...

Global site tag (gtag.js) - Google Analytics