选中Excel准备导入之前,先让用户选择工作表和字段. 应该怎么写? 点击导入之后,选择了一个excel文件,加入这个excel工作薄中有好几张工作表,必须要选择其中一张,然后再选择所需要的字段进行导入. 这个代码应该怎么写.100分求救! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先读取EXCEL的所有工作表,用一个控件显示出来,让用户选择,然后读取该工作表的所有数据,用GRID显示三列1 选择,2.EXCEL列 3.导入表的列选择后,可以更改导入表的列名建立好对应关系,然后自己拼接SQL执行就行了表达能力不好,不知道看懂没有 str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +strfile+ ";Extended Properties=Excel 8.0"; strcon = str1; str1 = " SELECT * "+ " FROM [Sheet1$] "; // " WHERE ([人员编码] IS NOT NULL) AND "+ // " WHERE(Trim([人员编码]) <> '') "; //" ORDER BY [人员编码] "; strtmp = str1; tabtmp1 = clspubcnt.ref_cnt_tb(strcon,strtmp); grid_file.DataSource = tabtmp1; 有了DateTable tabtmp1 字段名称不就有了 ? excel=New Excel.Applicationexcel.Open(文件名)For Each sheet As Excel.Worksheet In excel.Workbooks.Worksheets 'Next EXCEL自定义详细这里有http://bingning.net/VB/SOURCE/programing/index.html可以参考一下。 这个我他以前做这,给一个老师,他要打一excel的成绩表内容放在数据库中,来进行成绩查询,先把excel上传文件到网站目录下,再用gridview加载数据,可以选载是那个表如:sheet1,再让管理员选那几列用来作数据,因为成绩的excel做得大概相同,但列不太一样,这样后,再从gridview从导出datatable,再根据上面选的列的参数形成数据库的插入sql,再循环,如此,就是有点慢,500条,以内3秒, 如果你的Excel格式还可以,可以考虑用OleDb来连接Excel,如:string constr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""Excel 8.0; Imex=2;HDR=No;""", "c:\\a.xls");OleDbConnection con = new OleDbConnection(constr);con.Open();DataTable ret = con.GetSchema("Tables"); // 得到Excel中的全部Sheet名foreach(DataRow row in ret.Rows){ Console.WriteLine(row[2].ToString()); // DataRow[2]为Sheet名 string sql = "SELECT * FROM [" + row[2].ToString() + "] where 1=2";// 选出指定Sheet的全部列 OleDbCommand com = new OleDbCommand(sql, con); OleDbDataAdapter dap = new OleDbDataAdapter(com); DataTable cols; dap.Fill(cols); foreach(DataColumn col in cols.Columns){ Console.WriteLine(col.ColumnName); // 循环输出当前Sheet的列名 }}con.Close(); 怎么样把sheet的名称绑定到combobox呢? OleDbConnection objConn = null; DataTable dt = null; try { String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"; objConn = new OleDbConnection(connString); objConn.Open(); //dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" }); if (dt == null) { return null; } 然后把combox和dt["TABLE_NAME"]绑定就行了... 这种按字母快速检索是怎么实现的? 求解 HttpWebRequest.GetResponse() 求一个图片的判断 为什么设置ListView当前选择项对上下箭头移动无效 在C#中如何实现文件夹的复制???? Winform中datagrid帮定一个datatable,但是想让datatable中某几列不在datagrid中显示,怎么做呀?汗! VS2010 devenv.exe CPU100% 奇怪的超时问题 怎么样建立一个有格式要求的Byte[]? 如何让用户认证后才可以下载文件(网站的方式)? 散分论文被老师批评
用一个控件显示出来,让用户选择,
然后读取该工作表的所有数据,
用GRID显示三列
1 选择,2.EXCEL列 3.导入表的列
选择后,可以更改导入表的列名
建立好对应关系,然后自己拼接SQL执行就行了表达能力不好,不知道看懂没有
";Extended Properties=Excel 8.0";
strcon = str1;
str1 = " SELECT * "+
" FROM [Sheet1$] ";
// " WHERE ([人员编码] IS NOT NULL) AND "+
// " WHERE(Trim([人员编码]) <> '') ";
//" ORDER BY [人员编码] "; strtmp = str1;
tabtmp1 = clspubcnt.ref_cnt_tb(strcon,strtmp); grid_file.DataSource = tabtmp1; 有了DateTable tabtmp1 字段名称不就有了 ?
excel=New Excel.Application
excel.Open(文件名)
For Each sheet As Excel.Worksheet In excel.Workbooks.Worksheets
'
Next
先把excel上传文件到网站目录下,再用gridview加载数据,可以选载是那个表如:sheet1,再让管理员选那几列用来作数据,因为成绩的excel做得大概相同,但列不太一样,这样后,再从gridview从导出datatable,再根据上面选的列的参数形成数据库的插入sql,再循环,如此,就是有点慢,500条,以内3秒,
string constr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""Excel 8.0; Imex=2;HDR=No;""",
"c:\\a.xls");
OleDbConnection con = new OleDbConnection(constr);
con.Open();
DataTable ret = con.GetSchema("Tables"); // 得到Excel中的全部Sheet名
foreach(DataRow row in ret.Rows){
Console.WriteLine(row[2].ToString()); // DataRow[2]为Sheet名
string sql = "SELECT * FROM [" + row[2].ToString() + "] where 1=2";// 选出指定Sheet的全部列
OleDbCommand com = new OleDbCommand(sql, con);
OleDbDataAdapter dap = new OleDbDataAdapter(com);
DataTable cols;
dap.Fill(cols); foreach(DataColumn col in cols.Columns){
Console.WriteLine(col.ColumnName); // 循环输出当前Sheet的列名
}
}con.Close();
DataTable dt = null; try
{
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile
+ ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
objConn = new OleDbConnection(connString);
objConn.Open();
//dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
if (dt == null)
{
return null;
} 然后把combox和dt["TABLE_NAME"]绑定就行了...