需要对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 单元格地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)