您的位置:首页 > 编程语言 > C#

C#操作Excel时出现错误:“'Sh…

2014-09-10 15:21 369 查看
对于出现如题的错误,本人的另一篇博文已经指出原因,那么怎样才能自动获得Excel中各个sheet的名称呢?这样就能动态的选中返回那个sheet的数据,即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择。下面就把解决问题的代码列出来,主要用到了OleDbConnection.GetOleDbSchemaTable()方法。

///

/// 执行导入

///

/// Excel文件名

/// DataSet

public static DataSet doImport(string strFileName)

{

if (strFileName == "")

return null;

else

{

DataSet ExcelDs = new DataSet();

try

{

//Excel数据库连接串

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" +
strFileName + "';Extended Properties ='Excel
8.0;HDR=NO;IMEX=1'";

OleDbConnection OleDB = new
OleDbConnection(strConn);//打开数据源连接

OleDB.Open();//打开连接

//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等

System.Data.DataTable dtSheetName =
OleDB.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {
null, null, null, "Table" });

//声明包含excel中表名的字符串数组

string[] strTableNames = new string[dtSheetName.Rows.Count];

//将表名存入数组中

for (int k = 0; k < dtSheetName.Rows.Count; k++)

{

strTableNames[k] =
dtSheetName.Rows[k]["TABLE_NAME"].ToString();

}

//从指定的表名查询数据

string strSheet = "select * from [" + strTableNames[0] + "]";

OleDbDataAdapter ExcelDA = new OleDbDataAdapter(strSheet,
OleDB);//连接数据库

ExcelDA.Fill(ExcelDs, "ExcelInfo");

}

catch (Exception err)

{

MessageBox.Show(err.Message.Tostring(), "错误提示");

}

return ExcelDs;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐