62,614
社区成员
发帖
与我相关
我的任务
分享
package org.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
* 将excel数据导入到oracle数据库
* @author Administrator
*
*/
public class ReadExcel2 {
//用于返回三维数组的集合
private static ArrayList subdata=new ArrayList();
//excel中的表名
private static String tablename;
//文件路径
private static String filePath;
/**
* 读取excel数据并插入到数据库中
* @param filePath
*/
public static void ExcelDataImport(String filePath){
ArrayList al=readExcel(filePath);
//转换成二维数组
ArrayList list=ReadExcel2.getDisplayData(al);
InsertData(list);
}
//将读取的数据放到一个三维数组中
public static ArrayList readExcel(String filePath){
try {
subdata.clear(); //将静态的ArrayList数组清空,否则会不断增加
InputStream is=new FileInputStream(filePath); //可能会出异常所以加try{} FileNotFoundException
Workbook rwb=Workbook.getWorkbook(is); //BiffException IOException
//Sheet st=rwb.getSheet(0); //两种方式获取获取获取sheet表
// Sheet st=rwb.getSheet("Book1"); //Excel中第一页的页名称
Sheet st[]=rwb.getSheets();//得到Excel中所有页的列表
for (int a = 0; a < st.length; a++) {
ArrayList alList=new ArrayList();
ArrayList tablenames=new ArrayList();
ArrayList tableAndContents=new ArrayList();
tablename=st[a].getName().trim();
int b=0;
for (int i = 0; i <st[a].getRows(); i++) {
ArrayList al=new ArrayList();
for (int j = 0; j < st[a].getColumns(); j++) {
Cell c00=st[a].getCell(j,i);
//通用的获取cell值的方法,返回字符串
String strc00=c00.getContents().trim();
//获取cell具体类型值的方式得到内容
al.add(j,strc00);
}
alList.add(b,al);
b++;
}
tablenames.add(tablename);
tableAndContents.add(0,tablenames);
tableAndContents.add(1,alList);
subdata.add(a,tableAndContents);
}
rwb.close();
//关闭
//System.out.println(subdata);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return subdata;
}
private static void InsertData(ArrayList data){
String tablename;
ArrayList contents=new ArrayList();
for (int i = 0; i <data.size()-2; i++) {
ArrayList list=(ArrayList)data.get(i);
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
}
}
}
//将readExcel方法中读取出来的三维数组转换成二维数组数据
public static ArrayList getDisplayData(ArrayList al){
ArrayList result=new ArrayList();
for (int i = 0; i < al.size(); i++) {
ArrayList tem=(ArrayList)((ArrayList)al.get(i)).get(1);
for (int j = 0; j <tem.size(); j++) {
result.add(tem.get(j));
}
}
return result;
}
//得到文件路径
public static String getFilePath() {
return filePath;
}
//设置文件路径
public static void setFilePath(String filePath) {
ReadExcel2.filePath = filePath;
}
public static void main(String[] args) {
//ReadExcel2.ExcelDataImport("D:/功能介绍.xls");
//ReadExcel2.ExcelDataImport("E:\\MyWork\\周工作计划\\周工作计划2010-01-04到2010-01-08.xls");
ReadExcel2.ExcelDataImport("E:/MyWork/周工作计划/周工作计划2010-01-04到2010-01-08.xls");
}
}