Java如何连接excel,获取excel表数据 Java如何连接excel,获取excel表数据.而且是按原有的数据顺序取? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用poi就可以 public List readAsTable(String filePath,String sheetName) throws Exception{ List list=new ArrayList(); File file=new File(filePath); InputStream eis =new FileInputStream(file); HSSFWorkbook workbook=new HSSFWorkbook(eis); HSSFSheet sheet=workbook.getSheet(sheetName); Iterator rowiter= sheet.rowIterator(); Map colmnsMap=new HashMap(); int colmns=0; if(rowiter.hasNext()){ HSSFRow row=(HSSFRow) rowiter.next(); Iterator celliter= row.cellIterator(); HSSFCell cell=null; while(celliter.hasNext()){ colmns++; cell=(HSSFCell) celliter.next(); if(cell==null||cell.toString().trim().equals("")){ System.out.println("在表头的第"+colmns+"列发生错误!"); break; } colmnsMap.put(""+colmns, cell.toString()); } } int rows=1; while(rowiter.hasNext()){ try{ HSSFRow row=(HSSFRow) rowiter.next(); Iterator celliter= row.cellIterator(); HSSFCell cell=null; int cols=0; Map cells=new HashMap(); while(celliter.hasNext()&&cols<=colmns){ cols++; cell=(HSSFCell) celliter.next(); if(cell==null||cell.toString().trim().equals("")){ System.out.println("在第"+rows+"行发生错误![第"+cols+"列]"); break; } cells.put("key", colmnsMap.get(""+cols)); cells.put("value", cell.toString()); } list.add(cells); rows++; }catch(Exception e){ System.out.println("在第"+rows+"行发生错误!"); break; } } return list; } 先配置数据源import java.sql.*;public class TestDBExcel { public static void main(String[] args) { try { //First,load driver program Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Second,create connection String url="jdbc:odbc:odbcexcel"; String user=""; String password=""; Connection con=null; Statement st=null; ResultSet rs=null; con=DriverManager.getConnection(url, user, password); st=con.createStatement(); rs=st.executeQuery("select * from [student$]"); System.out.println("编号\t"+"姓名\t"+"性别\t"+"年龄"); while(rs.next()) { System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } poi apache的开源项目 url:http://poi.apache.org/ 可以把jar下下来看看,里面有英文的api 用2楼的POI吧,我也用过,他从里面取出来数据就是按照EXCEL表格从上到下自己的编号顺序取的 哎,本来想用JAVA做,结果考虑到用JAVA做的应用程序不能直接运行。又要换C#做 这个可以用poi 或者 jxl 网上的资料很多!! 用jxl完全可以,顺序读取也就是一行一行都,完全可以控制,下面是部分代码。File pro_xml = new File(fx_path);//new 一个文件 fx_path 是excel路径 InputStream is = new FileInputStream(pro_xml); Workbook sourceBook = Workbook.getWorkbook(is); Sheet sheet = sourceBook.getSheet(0);//getSheet(0) 这个0意思是 excel表的第一个sheet for (int j = 0; j < sheet.getRows(); j++) { String subject = sheet.getCell("B" + String.valueOf(j + 1)). getContents();for循环里面就可以把拿到数据做自己想做的事情 有什么限制不能用SQL嗎?insert into tab select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;IMEX=1;DATABASE=e:\cel.xls','select * from [sheet1$]') 对的,使用jxl.jar,然后上网找找如何使用jxl读写xls文件的例子即可jxl仅可以操作97~03格式(xls)的文件,2007格式的不支持 下了一个人家写好的程序.怎么打开?? java中对线程的操作?(开始、停止、暂停) java设计新玩法的五子棋(主要的问题是如何把放在棋盘上的五个棋子收起来) 编译通过,但执行jar包时为什么却报错?? 提示框背景颜色问题 如何在java程序中执行dos命令 eclipse +Lomboz+tomcat调试jsp,在线等待.解决后即刻给分 如何使一个对话框成为模态(不确定它,不准对生出它的Frame操作)对话框 JTable 怎么用,我看的书里面没有介绍JTable的! java 解析文本文件 中换行问题 如何循环把值赋给Jlabel 关于一段代码没有执行到的问题
public List readAsTable(String filePath,String sheetName) throws Exception{
List list=new ArrayList();
File file=new File(filePath);
InputStream eis =new FileInputStream(file);
HSSFWorkbook workbook=new HSSFWorkbook(eis);
HSSFSheet sheet=workbook.getSheet(sheetName);
Iterator rowiter= sheet.rowIterator();
Map colmnsMap=new HashMap();
int colmns=0;
if(rowiter.hasNext()){
HSSFRow row=(HSSFRow) rowiter.next();
Iterator celliter= row.cellIterator();
HSSFCell cell=null;
while(celliter.hasNext()){
colmns++;
cell=(HSSFCell) celliter.next();
if(cell==null||cell.toString().trim().equals("")){
System.out.println("在表头的第"+colmns+"列发生错误!");
break;
}
colmnsMap.put(""+colmns, cell.toString());
}
}
int rows=1;
while(rowiter.hasNext()){
try{
HSSFRow row=(HSSFRow) rowiter.next();
Iterator celliter= row.cellIterator();
HSSFCell cell=null;
int cols=0;
Map cells=new HashMap();
while(celliter.hasNext()&&cols<=colmns){
cols++;
cell=(HSSFCell) celliter.next();
if(cell==null||cell.toString().trim().equals("")){
System.out.println("在第"+rows+"行发生错误![第"+cols+"列]");
break;
}
cells.put("key", colmnsMap.get(""+cols));
cells.put("value", cell.toString());
}
list.add(cells);
rows++;
}catch(Exception e){
System.out.println("在第"+rows+"行发生错误!");
break;
}
}
return list;
}
public static void main(String[] args) {
try {
//First,load driver program
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Second,create connection
String url="jdbc:odbc:odbcexcel";
String user="";
String password="";
Connection con=null;
Statement st=null;
ResultSet rs=null;
con=DriverManager.getConnection(url, user, password);
st=con.createStatement();
rs=st.executeQuery("select * from [student$]");
System.out.println("编号\t"+"姓名\t"+"性别\t"+"年龄");
while(rs.next())
{
System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4));
}
} catch (SQLException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
File pro_xml = new File(fx_path);//new 一个文件 fx_path 是excel路径
InputStream is = new FileInputStream(pro_xml);
Workbook sourceBook = Workbook.getWorkbook(is);
Sheet sheet = sourceBook.getSheet(0);//getSheet(0) 这个0意思是 excel表的第一个sheet
for (int j = 0; j < sheet.getRows(); j++) {
String subject = sheet.getCell("B" + String.valueOf(j + 1)).
getContents();for循环里面就可以把拿到数据做自己想做的事情
SQL嗎?insert into tab select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;IMEX=1;DATABASE=e:\cel.xls','select * from [sheet1$]')
jxl仅可以操作97~03格式(xls)的文件,2007格式的不支持