winform中Excel导入Access,如何导入中文标头..大侠请进

JISO9001 2010-06-04 08:33:23
小弟在Excel导入Access的时候...Excel的标头必须和数据库的字段是一样的才能导入,所以很麻烦..小弟求中文标头也可导入的代码....,拜托嘞
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-06-05
  • 打赏
  • 举报
回复
第一行标头,你就不要了。
捷哥1999 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiso9001 的回复:]

我的意思是Excel的标头现在都必须是和数据库字段一样才可导入Access,所以想让Excel的标头是中文也可导入Access,
[/Quote]

跟表头有关系吗,你要的是导入对应的每一列excel数据到数据表的对应列中,可以从第二行开始取数据,我给的方法,可以的。
xrongzhen 2010-06-05
  • 打赏
  • 举报
回复
最好的办法还是自己逐行读取Excel中的数据,用Insert语句插入

也不麻烦,数据类型还不会出错
xrongzhen 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiso9001 的回复:]
引用 4 楼 zhgroup 的回复:
楼主是说EXCEL的标题和数据库表的列字段必须相同吧,
这个你可以用OLEDB连接读取EXCEL内容,
然后读取列信息(假如是第一行),
然后再根据行检测字段是否与数据库中的表一致,然后再保存数据

我的意思是Excel的标头现在都必须是和数据库字段一样才可导入Access,所以想让Excel的标头是中文也可导入Access,
[/Quote]

电脑没装Access,但是SQL Server是可以导入的,包括中文表头,直接向数据库中导入Sheet1$。这个导入和数据库字段有什么关系。

你是不是建好表了,想直接把数据导入到表中?那样的话估计不行。建议直接导入整个表,然后改名不就行了。

还有,如果字段数据类型不一致的话,有可能造成导入数据的某些字段为空。例如,你设置的是int型,但是Excel文件中的数据不能转化成int型的话,就为null了
JISO9001 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhgroup 的回复:]
楼主是说EXCEL的标题和数据库表的列字段必须相同吧,
这个你可以用OLEDB连接读取EXCEL内容,
然后读取列信息(假如是第一行),
然后再根据行检测字段是否与数据库中的表一致,然后再保存数据
[/Quote]
我的意思是Excel的标头现在都必须是和数据库字段一样才可导入Access,所以想让Excel的标头是中文也可导入Access,
zhgroup 2010-06-04
  • 打赏
  • 举报
回复
楼主是说EXCEL的标题和数据库表的列字段必须相同吧,
这个你可以用OLEDB连接读取EXCEL内容,
然后读取列信息(假如是第一行),
然后再根据行检测字段是否与数据库中的表一致,然后再保存数据
捷哥1999 2010-06-04
  • 打赏
  • 举报
回复

//获取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语句插入数据库
}


捷哥1999 2010-06-04
  • 打赏
  • 举报
回复
小弟在Excel导入Access的时候...Excel的标头必须和数据库的字段是一样的才能导入,所以很麻烦..小弟求中文标头

用Vsto,自己读取Excel的每一个列,插入数据库!
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
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

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧