winform中Excel导入Access,如何导入中文标头..大侠请进 小弟在Excel导入Access的时候...Excel的标头必须和数据库的字段是一样的才能导入,所以很麻烦..小弟求中文标头也可导入的代码....,拜托嘞 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private DataTable XlsToDataTable(String strpath) { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strpath + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn); DataTable dt = new DataTable(); myCommand.Fill(dt); return dt; } 或private void button1_Click(object sender, EventArgs e) { string str=""; oleDbConnExcel = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=" + Application.StartupPath.Trim() +"\\a.xls"); oleDbConnExcel.Open(); strGetDataFromExcel = "SELECT * FROM [Sheet1$]"; oleDbCmdExcel = new OleDbCommand(strGetDataFromExcel, oleDbConnExcel); oleDbDataReaderExcel = oleDbCmdExcel.ExecuteReader(); if (oleDbDataReaderExcel.HasRows == true) { oleDbConnAccess.Open(); for (; ; ) { if (oleDbDataReaderExcel.Read()) { str= ""; oleDbCmdAccess = new OleDbCommand(str, oleDbConnAccess); oleDbCmdAccess.ExecuteNonQuery(); oleDbCmdAccess.Dispose(); } else break; } oleDbConnAccess.Close(); } oleDbDataReaderExcel.Close(); oleDbCmdExcel.Dispose(); oleDbConnExcel.Close(); } 或直接代码excel模板,遍历数据集,导入excel 小弟在Excel导入Access的时候...Excel的标头必须和数据库的字段是一样的才能导入,所以很麻烦..小弟求中文标头用Vsto,自己读取Excel的每一个列,插入数据库! //获取Excel表格行数int iRows = Excel.Worksheet.UsedRange.Rows.Count;Excel.Range rngID = SourceSheet.get_Range("A4", "A" + iRows);//先计算出编号这一列总共有多少行效数据?int i = 1;for (; i < iRows; i++){ if (((Excel.Range)rngID.Cells[i, 1]).Value2 == null) break;}int maxRowIndex = i - 1;for (int rowIndex = 3; rowIndex < iRows - 4; rowIndex++){ //获取每一个字段 ((Excel.Range)rngID.Cells[rowIndex - 2, 1]).Value2; //拼装sql语句插入数据库} 楼主是说EXCEL的标题和数据库表的列字段必须相同吧,这个你可以用OLEDB连接读取EXCEL内容,然后读取列信息(假如是第一行),然后再根据行检测字段是否与数据库中的表一致,然后再保存数据 我的意思是Excel的标头现在都必须是和数据库字段一样才可导入Access,所以想让Excel的标头是中文也可导入Access, 电脑没装Access,但是SQL Server是可以导入的,包括中文表头,直接向数据库中导入Sheet1$。这个导入和数据库字段有什么关系。你是不是建好表了,想直接把数据导入到表中?那样的话估计不行。建议直接导入整个表,然后改名不就行了。还有,如果字段数据类型不一致的话,有可能造成导入数据的某些字段为空。例如,你设置的是int型,但是Excel文件中的数据不能转化成int型的话,就为null了 最好的办法还是自己逐行读取Excel中的数据,用Insert语句插入也不麻烦,数据类型还不会出错 跟表头有关系吗,你要的是导入对应的每一列excel数据到数据表的对应列中,可以从第二行开始取数据,我给的方法,可以的。 求一身份证验证正则,速度结贴 关于gridview的HyperLink列 如果驗證textbox中輸入是字符是否是 正整數? C#中怎么样生成类似于一般安装程序里的上一步下一步的那种界面啊? ocx问题,急用! 关闭线程问题,急救急救 请教关于用C#存储单色位图的问题 问个小问题,datagrid行的内容换行该怎么弄? 如何增加数组长度,特简单问题,解决马上给分 100分求一句Oracle中的语句,解决马上给分,谢谢,比较急 如何在GridView中显示符合条件的数据 急!急!急! ------把值写入数据库,这个值该怎样获取?-----
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strpath + ";" +
"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
DataTable dt = new DataTable();
myCommand.Fill(dt);
return dt;
} 或
private void button1_Click(object sender, EventArgs e)
{
string str="";
oleDbConnExcel = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=" + Application.StartupPath.Trim() +"\\a.xls");
oleDbConnExcel.Open();
strGetDataFromExcel = "SELECT * FROM [Sheet1$]";
oleDbCmdExcel = new OleDbCommand(strGetDataFromExcel, oleDbConnExcel);
oleDbDataReaderExcel = oleDbCmdExcel.ExecuteReader();
if (oleDbDataReaderExcel.HasRows == true)
{
oleDbConnAccess.Open();
for (; ; )
{
if (oleDbDataReaderExcel.Read())
{
str= "";
oleDbCmdAccess = new OleDbCommand(str, oleDbConnAccess);
oleDbCmdAccess.ExecuteNonQuery();
oleDbCmdAccess.Dispose();
}
else
break;
}
oleDbConnAccess.Close();
}
oleDbDataReaderExcel.Close();
oleDbCmdExcel.Dispose();
oleDbConnExcel.Close();
}
或直接代码excel模板,遍历数据集,导入excel
//获取Excel表格行数
int iRows = Excel.Worksheet.UsedRange.Rows.Count;
Excel.Range rngID = SourceSheet.get_Range("A4", "A" + iRows);
//先计算出编号这一列总共有多少行效数据?
int i = 1;
for (; i < iRows; i++)
{
if (((Excel.Range)rngID.Cells[i, 1]).Value2 == null)
break;
}
int maxRowIndex = i - 1;
for (int rowIndex = 3; rowIndex < iRows - 4; rowIndex++)
{
//获取每一个字段
((Excel.Range)rngID.Cells[rowIndex - 2, 1]).Value2;
//拼装sql语句插入数据库
}
这个你可以用OLEDB连接读取EXCEL内容,
然后读取列信息(假如是第一行),
然后再根据行检测字段是否与数据库中的表一致,然后再保存数据
电脑没装Access,但是SQL Server是可以导入的,包括中文表头,直接向数据库中导入Sheet1$。这个导入和数据库字段有什么关系。你是不是建好表了,想直接把数据导入到表中?那样的话估计不行。建议直接导入整个表,然后改名不就行了。还有,如果字段数据类型不一致的话,有可能造成导入数据的某些字段为空。例如,你设置的是int型,但是Excel文件中的数据不能转化成int型的话,就为null了
跟表头有关系吗,你要的是导入对应的每一列excel数据到数据表的对应列中,可以从第二行开始取数据,我给的方法,可以的。