java读excel出错 index改成別的就可以了index1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to lhb525(hobby) Sheet1是excel文件的某一页的页名。to GuoYangHai(Start) index是出错信息啊。 從出錯信息看是ODBC用的不對,我在我機器上過行一下看看吧.請等等.... while(rs.next()){ for(int i=0;i<numberOfColumns;i++){ if(i>1)System.out.println(","); //System.out.println(rs.getString(i)); System.out.println(rsmd.getColumnName(i)); }這里有一個問韙,原來那個注消的是對的.那個方法是打出內容來,而下面那名是只打出了一列的,就想表的字段名.應改為這樣.while(rs.next()){ for(int i=0;i<numberOfColumns;i++){ if(i>1)System.out.println(","); System.out.println(rs.getString(i)); //System.out.println(rsmd.getColumnName(i)); }只是對了一點,一會我會發一個完成的建立和讀出的用例. 這個用例是完成.我在我的機器上用了通過,jb7+jdk1.3.1 ========================================================begin==import java.sql.*;import java.io.*;import java.util.*;import java.text.*;public class Excel { public Excel() { setDefaults(); } private static void m(String pMessage) { System.out.println(pMessage); } private void setDefaults() { setDriver("sun.jdbc.odbc.JdbcOdbcDriver"); setUrl("jdbc:odbc");// ODBC data source named "TestExcel" defined from Control Panel setDataSource("ExcelODBC"); setTableName("ExcelSheetName"); } public void openDatabase() { String lConnectStr = getUrl()+":"+getDataSource(); try { Class.forName(getDriver()); gConnection = DriverManager.getConnection(lConnectStr); } catch (Exception e) { m("openDatabase(): "+e.getMessage()); } } private void closeDatabase() { try { getConnection().close(); } catch (Exception e) { m("closeDatabase(): "+e.getMessage()); } } private void createTable() { m("createTable() begin"); Statement lStat = null; try { lStat = getConnection().createStatement(); lStat.execute("CREATE TABLE "+getTableName()+" (" +" ID INTEGER" +" ,NAME VARCHAR" +")"); } catch (Exception e) { m("createTable(): "+e.getMessage()); } m("createTable() end"); } private void doInsert() { m("doInsert() begin"); Statement lStat = null; try { lStat = getConnection().createStatement(); lStat.executeUpdate("INSERT INTO "+getTableName()+ "(ID,NAME) VALUES(10,'KANGAROO')"); lStat.executeUpdate("INSERT INTO "+getTableName()+"(ID,NAME) VALUES (20,'KOALA')"); lStat.executeUpdate("INSERT INTO "+getTableName()+"(ID,NAME) VALUES (30,'PAULHOGAN')"); lStat.close(); } catch (Exception e) { m("doInsert(): "+e.getMessage()); } m("doInsert() end"); } private void doQuery() { m("doQuery() begin"); try { Statement lStat = getConnection().createStatement(); ResultSet lRes = lStat.executeQuery( "SELECT * FROM "+getTableName()); ResultSetMetaData lMeta = lRes.getMetaData();// print out the column headers separated by commas for (int i = 1; i <= lMeta.getColumnCount(); ++i) { if (i > 1) System.out.print(", "); String lValue = lMeta.getColumnName(i); System.out.print(lValue); } System.out.println("");// print out the data separated by commas while (lRes.next()) { for (int i=1; i<=lMeta.getColumnCount(); ++i) { if (i > 1) System.out.print(", "); String lValue = lRes.getString(i); System.out.print(lValue); } System.out.println(""); } lRes.close(); lStat.close(); } catch (Exception e) { m("doQuery(): "+e.getMessage()); } m("doQuery() end"); } private void run() { openDatabase(); createTable(); doInsert(); doQuery(); closeDatabase(); } public static void main(String args[]) { m("main() begin"); Excel lExcel = new Excel(); lExcel.run(); m("main() end"); System.exit(0); } public void setTableName (String pValue) { gTableName = pValue; } public String getTableName() { return(gTableName); } public void setSql(String pValue) { gSql = pValue; } public String getSql() { return(gSql); } public Connection getConnection() { return(gConnection); } public String getDataSource() { return(gDataSource); } public void setDataSource(String pValue) { gDataSource = pValue; } public void setDriver(String pValue) { gDriver = pValue; } public void setUrl(String pValue) { gUrl = pValue; } public String getDriver () { return (gDriver); } public String getUrl () { return (gUrl); } private Connection gConnection = null; private String gDataSource = null , gTableName = null , gSql = null , gDriver = null , gUrl = null ;}=====================================================end===請大家試用. 我個人認為JAVA只能對它自已在EXCEL文件中創建的sheet可以讀寫,但是我自已建的sheet它不能識別.不知為什麼.奇怪了.上面做的朋友,可以用我的用例生成的那個ExcelSheetName,用你的那個程序讀一下ExcelSheetName,就沒問題了.有想法的朋友請找我.MSN:[email protected] 把for(int i=0;i<numberOfColumns;i++)中的i=0改成i=1,如下所示:for(int i=1;i<numberOfColumns;i++)即可。java.sql.ResultSet的列是从1开始计数的,不是从0 在团队中大家都是怎么开发的 急需!谢谢各位!莱鸟跪求!只有三十分了!多谢 两个问题 用jgraph绘图后,拖动cell后edge显示有问题 hibernate缓存问题...燃眉呀 Strut数据库数据源连接池问题 请教一下,关于Struts验证框架 SSH在启动时报错Unable to load configuration. jb9.0整合WebLogicServer时候报错。。。在线等,解决后立马结贴! 巨分求J2EE实例教程 请教一个关于taglib问题,高手请指点 讨论:Jbuilder与WSAD哪个比较好用?
Sheet1是excel文件的某一页的页名。to GuoYangHai(Start)
index是出错信息啊。
for(int i=0;i<numberOfColumns;i++){
if(i>1)System.out.println(",");
//System.out.println(rs.getString(i));
System.out.println(rsmd.getColumnName(i));
}
這里有一個問韙,原來那個注消的是對的.那個方法是打出內容來,
而下面那名是只打出了一列的,就想表的字段名.
應改為這樣.
while(rs.next()){
for(int i=0;i<numberOfColumns;i++){
if(i>1)System.out.println(",");
System.out.println(rs.getString(i));
//System.out.println(rsmd.getColumnName(i));
}只是對了一點,
一會我會發一個完成的建立和讀出的用例.
jb7+jdk1.3.1
========================================================begin==
import java.sql.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class Excel {
public Excel()
{
setDefaults();
} private static void m(String pMessage)
{
System.out.println(pMessage);
} private void setDefaults()
{
setDriver("sun.jdbc.odbc.JdbcOdbcDriver");
setUrl("jdbc:odbc");
// ODBC data source named "TestExcel" defined from Control Panel
setDataSource("ExcelODBC");
setTableName("ExcelSheetName");
} public void openDatabase()
{ String lConnectStr = getUrl()+":"+getDataSource(); try {
Class.forName(getDriver());
gConnection = DriverManager.getConnection(lConnectStr);
}
catch (Exception e) {
m("openDatabase(): "+e.getMessage());
}
} private void closeDatabase()
{
try {
getConnection().close();
}
catch (Exception e) {
m("closeDatabase(): "+e.getMessage());
}
} private void createTable()
{
m("createTable() begin"); Statement lStat = null; try {
lStat = getConnection().createStatement(); lStat.execute("CREATE TABLE "+getTableName()+" ("
+" ID INTEGER"
+" ,NAME VARCHAR"
+")");
}
catch (Exception e) {
m("createTable(): "+e.getMessage());
} m("createTable() end");
} private void doInsert()
{
m("doInsert() begin"); Statement lStat = null; try {
lStat = getConnection().createStatement(); lStat.executeUpdate("INSERT INTO "+getTableName()+ "(ID,NAME) VALUES(10,'KANGAROO')");
lStat.executeUpdate("INSERT INTO "+getTableName()+"(ID,NAME) VALUES (20,'KOALA')");
lStat.executeUpdate("INSERT INTO "+getTableName()+"(ID,NAME) VALUES (30,'PAULHOGAN')"); lStat.close();
}
catch (Exception e) {
m("doInsert(): "+e.getMessage());
} m("doInsert() end");
} private void doQuery()
{
m("doQuery() begin"); try {
Statement lStat = getConnection().createStatement();
ResultSet lRes = lStat.executeQuery( "SELECT * FROM "+getTableName());
ResultSetMetaData lMeta = lRes.getMetaData();// print out the column headers separated by commas
for (int i = 1; i <= lMeta.getColumnCount(); ++i)
{
if (i > 1)
System.out.print(", "); String lValue = lMeta.getColumnName(i);
System.out.print(lValue);
}
System.out.println("");// print out the data separated by commas
while (lRes.next())
{
for (int i=1; i<=lMeta.getColumnCount(); ++i)
{
if (i > 1)
System.out.print(", "); String lValue = lRes.getString(i);
System.out.print(lValue);
}
System.out.println("");
} lRes.close();
lStat.close();
}
catch (Exception e) {
m("doQuery(): "+e.getMessage());
} m("doQuery() end");
} private void run()
{
openDatabase(); createTable();
doInsert();
doQuery(); closeDatabase();
} public static void main(String args[])
{
m("main() begin"); Excel lExcel = new Excel(); lExcel.run(); m("main() end"); System.exit(0);
} public void setTableName (String pValue)
{
gTableName = pValue;
} public String getTableName()
{
return(gTableName);
} public void setSql(String pValue)
{
gSql = pValue;
} public String getSql()
{
return(gSql);
} public Connection getConnection()
{
return(gConnection);
} public String getDataSource()
{
return(gDataSource);
} public void setDataSource(String pValue)
{
gDataSource = pValue;
} public void setDriver(String pValue)
{
gDriver = pValue;
} public void setUrl(String pValue)
{
gUrl = pValue;
} public String getDriver ()
{
return (gDriver);
} public String getUrl ()
{
return (gUrl);
} private Connection
gConnection = null; private String gDataSource = null ,
gTableName = null ,
gSql = null ,
gDriver = null ,
gUrl = null ;}
=====================================================end===
請大家試用.
上面做的朋友,可以用我的用例生成的那個ExcelSheetName,
用你的那個程序讀一下ExcelSheetName,就沒問題了.
有想法的朋友請找我.MSN:[email protected]
中的i=0改成i=1,如下所示:
for(int i=1;i<numberOfColumns;i++)
即可。java.sql.ResultSet的列是从1开始计数的,不是从0