| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2008 人关注过本帖
标题:如何打开excel表格里面的某一张表
只看楼主 加入收藏
laojiang8
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-8-23
收藏
 问题点数:0 回复次数:3 
如何打开excel表格里面的某一张表

在C#中可以实现用 openfiledialog 控件来打开一个excel表格,但是打开其中的哪个表却是默认的,能不能也用openfileDialog这样的控件来实现打开其中的某张表的功能?下面是一段代码,
string source = this.openFileDialog1 .FileName ;
string ConnStr="Provider =Microsoft.Jet.OLEDB.4.0;Data Source ="+source+";Extended Properties =Excel 8.0";
string query = "select * from ["+this.textBox2 .Text +"$]";
if(this.textBox2 .Text =="")
{
MessageBox.Show ("请输入你要打开的表名");
return;
}
else
{
OleDbCommand cmd = new OleDbCommand (query,new OleDbConnection (ConnStr));
OleDbDataAdapter odd = new OleDbDataAdapter (cmd);
DataSet ds =new DataSet ();
odd.Fill (ds,"["+this.textBox2 .Text +"$]");
this.dataGrid1 .DataSource = ds;
this.dataGrid1 .DataMember ="["+this.textBox2.Text +"$]";
}
我想的是先在一个textBox里面输入表名,但是一调试发现不行,太不实用了,想请大家帮个忙,看能不能用一些简单的方法实现这个功能

搜索更多相关主题的帖子: excel 表格 
2006-09-22 13:04
上炕不脱鞋
Rank: 1
等 级:新手上路
威 望:1
帖 子:332
专家分:0
注 册:2006-3-19
收藏
得分:0 

我写过的代码,不过Excel表是固定,你看看吧,应该有点帮助。

string strPath = File1.PostedFile.FileName;

if(strPath == "")
{
Response.Write("<script>alert('请先选择文件')</script>");
return;
}
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strPath + ";" +
"Extended Properties=Excel 8.0;";

// Create connection object by using the preceding connection string.
OleDbConnection objConn = new OleDbConnection(sConnectionString);
try
{

// Open connection with the database.
objConn.Open();

// The code to follow uses a SQL SELECT command to display the data from the worksheet.

// Create new OleDbCommand to return data from worksheet.
OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM[sheet1$]", objConn);
/*************************************************************
**********************测试读取单列****************************
OleDbDataReader dr = objCmdSelect.ExecuteReader();
while(dr.Read())
{
Response.Write("产品类别"+dr[2].ToString());
}
dr.Close();
***************************************************************/
// Create new OleDbDataAdapter that is used to build a DataSet
// based on the preceding SQL SELECT statement.
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

// Pass the Select command to the adapter.
objAdapter1.SelectCommand = objCmdSelect;

// Create new DataSet to hold information from the worksheet.
DataSet dsolb = new DataSet();

// Fill the DataSet with the information from the worksheet.
objAdapter1.Fill(dsolb);

// Bind data to DataGrid control.
DataGrid1.DataSource = dsolb;
DataGrid1.DataBind();
}
catch(Exception ee)
{
Response.Write("<script>alert('请先关闭文件')</script>");
return;
}
finally
{
// Clean up objects.
objConn.Close();
}

//从配置文件中取得数据库连接
string confstring = ConfigurationSettings.AppSettings["SQLConnectionString"].ToString();
string stringzhang = Session["Zhangce"].ToString();
string stringYear = Session["Year2"].ToString();
sqlconn = confstring+stringzhang+"_"+stringYear;

SqlConnection cnn = new SqlConnection(sqlconn);
string sqlcommand="insert into Inventory(cInvCode,cInvName,cInvStd,cInvCCode,dSDate,bsale,bpurchase,bself,bComSume,bProducing,itaxRate,bInvQuality,bInvBatch,bInvEntrust,bInvoverstock,bfree1,bfree2,bInvType,cGroupCode ,cComUnitCode,dModifyDate) "+
"values( @number,@name,@interface,@type,@date,@bsale,@bpurchase,@bself,@bComsume,@bProducing,@itaxRate,@binvquality,@bInvBatch,@binventrust,@binvoverstock,@bfree1,@bfree2,@bInvtype,@cGroupcode,@cComUnitCode,@deModifyDate)";
SqlCommand cmd = new SqlCommand(sqlcommand,cnn);
#region 遍历sql表
cmd.Parameters.Add(new SqlParameter("@type",SqlDbType.VarChar,20));
cmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,20));
cmd.Parameters.Add(new SqlParameter("@interface",SqlDbType.VarChar,20));
cmd.Parameters.Add(new SqlParameter("@number",SqlDbType.VarChar,20));
cmd.Parameters.Add(new SqlParameter("@date",SqlDbType.SmallDateTime,8,"yyyy-mm-dd"));//设定时间的格式

cmd.Parameters.Add(new SqlParameter("@bsale",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bpurchase",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bself",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bComsume",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bProducing",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@itaxRate",SqlDbType.Real));
cmd.Parameters.Add(new SqlParameter("@binvquality",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bInvBatch",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@binventrust",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@binvoverstock",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bfree1",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bfree2",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@bInvtype",SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@cGroupcode",SqlDbType.VarChar,10));
cmd.Parameters.Add(new SqlParameter("@cComUnitCode",SqlDbType.VarChar,10));
cmd.Parameters.Add(new SqlParameter("@deModifyDate",SqlDbType.DateTime,8,"yyyy-mm-dd"));
#endregion
#region 循环更新到数据库
int numcols = DataGrid1.Items.Count;
for(int i=0;i<=numcols-1;i++)
{
TableCell Name = DataGrid1.Items[i].Cells[0];
TableCell Interface = DataGrid1.Items[i].Cells[1];
TableCell Number = DataGrid1.Items[i].Cells[2];

cmd.Parameters["@type"].Value ="CCPP";

cmd.Parameters["@number"].Value = Number.Text.Trim();
cmd.Parameters["@name"].Value = Name.Text.Trim();
cmd.Parameters["@interface"].Value = Interface.Text.Trim();

cmd.Parameters["@date"].Value = DateTime.Now.ToShortDateString().ToString();

cmd.Parameters["@bsale"].Value = -1;
cmd.Parameters["@bpurchase"].Value = -1;
cmd.Parameters["@bself"].Value = -1;
cmd.Parameters["@bComsume"].Value = -1;

cmd.Parameters["@bProducing"].Value = -1;

cmd.Parameters["@itaxRate"].Value = 17;

cmd.Parameters["@binvquality"].Value = 0;

cmd.Parameters["@bInvBatch"].Value = 0;

cmd.Parameters["@binventrust"].Value = 0;

cmd.Parameters["@binvoverstock"].Value = 0;

cmd.Parameters["@bfree1"].Value = 0;

cmd.Parameters["@bfree2"].Value = 0;

cmd.Parameters["@bInvtype"].Value = 0;

cmd.Parameters["@cGroupcode"].Value = "SL";

cmd.Parameters["@cComUnitCode"].Value = "J";

cmd.Parameters["@deModifyDate"].Value = "2006-11-1";

cnn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch(SqlException ee)
{
Response.Write("<script>alert('错误:导入了相同的表或Excel表头位置错误,请改成产品名称、产品规格、产品编号的顺序!')</script>");
return;
}
finally
{
cnn.Close();
}
#endregion


新建的群(C#):23384106 验证注明
2006-09-22 17:25
laojiang8
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-8-23
收藏
得分:0 
谢谢你的帖子,但是我还是不懂,请问能不能让datagrid做导出的excel表格的数据源吗?

既然你选择了前方,就要风雨兼程
2006-09-22 18:24
laojiang8
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-8-23
收藏
得分:0 
就是把datagrid 里面的数据直接导出到一个excel 表格里面,我知道可以从用dataset(往datagrid里面导时的临时表)做导出的excel表格的数据源,但是如果说数据在datagrid 里面被修改了,而你想在excel表里得到 得到修改过的数据时该怎么做?
最好有点代码,以便学习
谢谢了,

既然你选择了前方,就要风雨兼程
2006-09-22 18:28
快速回复:如何打开excel表格里面的某一张表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved