C#给Excel插入数据报Microsoft Office Access 数据库引擎找不到对象“BlogClass”。请确定该对象存在,并正确拼写其名称和路径名

zhaoqinglian 2013-01-21 01:20:44
如题,运行时报错:Microsoft Office Access 数据库引擎找不到对象“BlogClass”。请确定该对象存在,并正确拼写其名称和路径名。我很确定Excel中是有BlogClass的。路径是绝对路径,也没有任何问题,求高手帮忙!
/// <summary>
/// 把数据插入到Excel表中
/// </summary>
/// <param name="sql">Sql语句</param>
/// <param name="Tablename">sheet名或者表名</param>
/// <returns></returns>
public static string InsertDataToExcel(string sql, string Tablename)
{
string result = "";
string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\fz001\Desktop\Personalblog\Personalblog\Excel\PBlog.xlsx" + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
OleDbConnection oleConn = new OleDbConnection(connstr);
try
{
oleConn.Open();
DataTable dt = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables_Info, null);
bool existTable = false;
foreach (DataRow dr in dt.Rows)//检查是否有信息表
{
if (dr["TABLE_NAME"].ToString() == Tablename+"$")//要加个$号
existTable = true;
}
if (!existTable)
{
result = "插入失败,不存在表" + Tablename;
}
else
{
OleDbCommand Cmd = new OleDbCommand("insert into BlogClass values('1','1','1','1','2012-12-12 12:12:12')", oleConn);
Cmd.ExecuteNonQuery();
result = "数据插入成功!";
}
}
catch (Exception te)
{
result = te.Message;
}
finally
{
oleConn.Close();
}
return result;
}
...全文
2224 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoqinglian 2013-01-21
  • 打赏
  • 举报
回复
引用 2 楼 xianfajushi 的回复:
参考,下面摘录其中一种 C# code?1234567891011121314151617string 微软表格 = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + System.Environment.CurrentDirectory + "\\" + 文件名 + "; Extended Propert……
谢谢xianfajushi,你的方法虽然没有说到点子上,但是还是解决了我的问题,是我自己把插入语句写错了 我原来写的是insert into BlogClass values('1','1','1','1','2012-12-12 12:12:12'),看了 你的之后发现你的插入语句和我的有点差别,我就改成了insert into [BlogClass$] values('1','1','1','1','2012-12-12 12:12:12'),就是多了个中括号和$
zhaoqinglian 2013-01-21
  • 打赏
  • 举报
回复
引用 4 楼 qiaohuyue 的回复:
确定你的 office 版本 和链接串的兼容,还有就是你的文件是否存在。
这个当然已经确定是完全没有问题的,我的连接字符串是Excel2007的,文件中也有这个Excel文件,问题中说的很明白啊
zhaoqinglian 2013-01-21
  • 打赏
  • 举报
回复
引用 3 楼 devmiao 的回复:
没有这个sheet "BlogClass"
我很确定是有的,我在问题中已经说了
XBodhi. 2013-01-21
  • 打赏
  • 举报
回复
引用 3 楼 devmiao 的回复:
没有这个sheet "BlogClass"
引用 4 楼 qiaohuyue 的回复:
确定你的 office 版本 和链接串的兼容,还有就是你的文件是否存在。
XBodhi. 2013-01-21
  • 打赏
  • 举报
回复
确定你的 office 版本 和链接串的兼容,还有就是你的文件是否存在。
devmiao 2013-01-21
  • 打赏
  • 举报
回复
没有这个sheet "BlogClass"
  • 打赏
  • 举报
回复
参考,下面摘录其中一种

string 微软表格 = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + System.Environment.CurrentDirectory + "\\" + 文件名 + "; Extended Properties = \"Excel 12.0 Xml; HDR = No\"";  
        OleDbConnection 表格文件 = new OleDbConnection(微软表格);  
        表格文件.Open();  
        System.Data.OleDb.OleDbCommand 执行写入 = new OleDbCommand();  
        执行写入.Connection = 表格文件;  
        for (int 行 = 0, 数 = 数据表.Rows.Count; 行 < 数; 行++)  
        {  
            int 条件设定数 = 0; if (滚动) 条件设定数 = 原条件设定数; else 条件设定数 = 副条件设定数;  
            if (行 >= 条件设定数)  
            {  
                执行写入.CommandText = "INSERT INTO [sheet1$] (省, 市, 区、县, 镇、乡, 街、路、村, ☆, 自然村, 村民组, 门牌号, 原字符☆替字符, 序) VALUES ('"  
                   + 数据表.Rows[行][0] + "','" + 数据表.Rows[行][1] + "','" + 数据表.Rows[行][2] + "','"  
                   + 数据表.Rows[行][3] + "','" + 数据表.Rows[行][4] + "','" + 数据表.Rows[行][5] + "','"  
                   + 数据表.Rows[行][6] + "','" + 数据表.Rows[行][7] + "','" + 数据表.Rows[行][8] + "','"  
                   + 数据表.Rows[行][9] + "','序" + (行 + 1).ToString() + "')";  
                计数 = 执行写入.ExecuteNonQuery(); if (滚动) 原条件设定数++; else 副条件设定数++;  
            }  
zhaoqinglian 2013-01-21
  • 打赏
  • 举报
回复
怎么没人回啊,求帮助啊

110,530

社区成员

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

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

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