浅谈JAVA读写Excel的几种途径

浅谈JAVA读写Excel的几种途径,第1张

需要对Excel中的数据进行读取 *** 作。一、在开始进行Java读写Excel前,需要先下一个jxl的jar包,这个jar包中提供了相关读写Excel的方法,将jxljar放到classpath下或者在工程的buildpath中添加jxljar后,便可以开始Java读写Excel了。二、Java读取Excel数据,首先,创建一个xls文件(如:jxltestxls),然后在文件中添加一些数据,Excel文件创建完成后,便可以开始写代码读取了。三、进行一个小小的扩展,读取一个目录下的所有Excel文件,读取的每个Excel文件的数据写入到不同的txt中。四、生成EXCEL需要手动写查询语句把ORACLE数据库中的数据查询出来,再通过 *** 作写到EXCEL文件里面。通过EXCEL把数据读取到ORACLE,同样需要去读取EXCEL工作薄里面的内容,再通过INSERT语句去插入数据库 *** 作。

XlsMain java 类

//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javautilArrayList;

import javautilList;

import orgapachepoihssfusermodelHSSFCell;

import orgapachepoihssfusermodelHSSFRow;

import orgapachepoihssfusermodelHSSFSheet;

import orgapachepoihssfusermodelHSSFWorkbook;

/

@author Hongten</br>

参考地址:>

如果你使用的是POI那么就是下面的方法

//根据传过来的文件名创建workbook

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));

//获得excel文件的sheet数量

int sn = wbgetNumberOfSheets();

//依次处理sheet表单

for (int i = 0; i < sn; i++) {

HSSFSheet sheet = wbgetSheetAt(i);

//获得第i张表单的所有行数

for (int j = 0; j < sheetgetLastRowNum(); j++) {

//获得第j行

HSSFRow row = sheetgetRow(j);

//获得该行的cell数量

for (int k = 0; k < rowgetLastCellNum(); k++) {

//☆☆根据cell号获得cell的所有属性☆☆

HSSFCell cell = rowgetCell((short) k);

//然后你就得到值啦

Systemoutprintln(cellgetRichStringCellValue());

当然也可以通过匹配值得到地址

根据你下面的这段要求:

“就是列数有时有三个,有时有四个,这些都是不确定的,所以想动态生成cell0,不用去考虑到底生成多少个HSSFCell对象”

给个思路的代码(我是直接写的,你拿来用时要改改):

List list=//你用来动态生成的数据列表

int rno=listsize(); //行数

//列数如下,我想这是你的问题的关键

int cno=listget(0)getClass()getDeclaredFields()length;//看不懂就照用试试。

XSSFRow row=null;

XSSFCell cell = null;

for(int i=0;i<rno;i++){

row=sheetcreateRow(i);

for(int j=0;j<cno;j++){

cell = rowcreateCell(j);

//我想你在这里要取值时也是个问题。看你的list封装的是什么了

}

}

java读取excel时间格式出现数字的处理方法:

Excel存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化

1、数值格式(CELL_TYPE_NUMERIC):

1纯数值格式:getNumericCellValue() 直接获取数据

2日期格式:处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式

1)判断是否是日期格式:HSSFDateUtilisCellDateFormatted(cell)

2)判断是日期或者时间

cellgetCellStyle()getDataFormat() == HSSFDataFormatgetBuiltinFormat("h:mm")

OR: cellgetCellStyle()getDataFormat() == HSSFDataFormatgetBuiltinFormat("yyyy-MM-dd")

3自定义日期格式:处理yyyy年m月d日,h时mm分,yyyy年m月等含文字的日期格式

判断cellgetCellStyle()getDataFormat()值,解析数值格式

yyyy年m月d日----->31

m月d日---->58

h时mm分--->32

举例说明:

private String parseExcel(Cell cell) {

String result = new String();

switch (cellgetCellType()) {

case HSSFCellCELL_TYPE_NUMERIC:// 数字类型

if (HSSFDateUtilisCellDateFormatted(cell)) {// 处理日期格式、时间格式

SimpleDateFormat sdf = null;

if (cellgetCellStyle()getDataFormat() == HSSFDataFormat

getBuiltinFormat("h:mm")) {

sdf = new SimpleDateFormat("HH:mm");

} else {// 日期

sdf = new SimpleDateFormat("yyyy-MM-dd");

}

Date date = cellgetDateCellValue();

result = sdfformat(date);

} else if (cellgetCellStyle()getDataFormat() == 58) {

// 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

double value = cellgetNumericCellValue();

Date date = orgapachepoissusermodelDateUtil

getJavaDate(value);

result = sdfformat(date);

} else {

double value = cellgetNumericCellValue();

CellStyle style = cellgetCellStyle();

DecimalFormat format = new DecimalFormat();

String temp = stylegetDataFormatString();

// 单元格设置成常规

if (tempequals("General")) {

formatapplyPattern("#");

}

result = formatformat(value);

}

break;

case HSSFCellCELL_TYPE_STRING:// String类型

result = cellgetRichStringCellValue()toString();

break;

case HSSFCellCELL_TYPE_BLANK:

result = "";

default:

result = "";

break;

}

return result;

}

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(

file));

// 获得第一个工作表对象

HSSFSheet sheet = workbookgetSheetAt(0);

// 得到有效的行数

int countRows = sheetgetLastRowNum();

int countColumns = 0;

//第一行为表头,从第二行开始读数据

for (int i = 1; i <= countRows; i++) {

// 获取行对象

HSSFRow row = sheetgetRow(i);

if (row == null)

continue;

// 一行的单元格数量

countColumns = rowgetLastCellNum();

for (int j = 0; j < countColumns; j++) {

// 获取单元格

HSSFCell cell = rowgetCell(j);

String strCell = "";

if (null != cell) {

switch (cellgetCellType()) {

case HSSFCellCELL_TYPE_NUMERIC:// 数字类型

break;

}

}

}

}

以上就是关于浅谈JAVA读写Excel的几种途径全部的内容,包括:浅谈JAVA读写Excel的几种途径、用javaPOI包的方法获取excel中的行列号、java中poi如何得到excel 单元格地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9313968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存