同样的代码,从access导出到excel没有问题,但从SQL导出则提示出错,没有权限

蜗牛学编程 2020-07-28 11:27:02
各位老师,请教一下。
以下代码是从数据库导出到excel中的代码。从access导出没有问题。但从SQL导出则报错,提示<指定的架构名称“Excel 8.0;database=……..”不存在,或者您没有使用该名称的权限>
不知道什么原因,折腾了好久没调试出来,盼望老师们指教。
另外,如果我想打开一个指定的excel,并把datagridview里的某些值赋值到指定单元格,最后以textbox1的内容作为excel名进行保存。这个代码该如何写吗?
盼教导~~~

private void button20_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(constr);
try
{
SaveFileDialog saveFile = new SaveFileDialog();

saveFile.Filter = ("Excel 文件(*.xls)|*.xls");//指定文件后缀名为Excel 文件。

if (saveFile.ShowDialog() == DialogResult.OK)

{

string filename = saveFile.FileName;

int index = filename.LastIndexOf("//");//获取最后一个/的索引

filename = filename.Substring(index + 1);//获取excel名称(新建表的路径相对于SaveFileDialog的路径)

string sql = "select top 65536 * into [Excel 8.0;database=" + filename + "].[用户信息] from DL"; //如果是导出筛选后结果,可后面加上条件: where ID between 4 and 10";
SqlCommand com = new SqlCommand(sql, con);
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("导出数据成功", "导出数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
System.Diagnostics.Process.Start(filename.ToString()); //打开excel
}
}
...全文
9811 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
张元浩_HY 2020-08-01
  • 打赏
  • 举报
回复
如果只是要一次性把SQL数据导出来,可以在SQL Server Management Studio里直接导出EXCEL,方便快捷。如果是用C#写程序实现从SQL直接导出Excel,必须在SQL Server配置一些内容,而且只能导出到服务器,比较麻烦。可以用select读取到DataTable然后导出到Excel。下面的代码是我这些年筛选过稳定高效一直在用的。
https://blog.csdn.net/front333/article/details/107724908
张元浩_HY 2020-08-01
  • 打赏
  • 举报
回复
如果只是要一次性把SQL数据导出来,可以在SQL Server Management Studio里直接导出EXCEL,方便快捷。如果是用C#写程序实现从SQL直接导出Excel,必须在SQL Server配置一些内容,而且只能导出到服务器,比较麻烦。可以用select读取到DataTable然后导出到Excel。下面的代码是我这些年筛选过稳定高效一直在用的。
https://mp.csdn.net/console/editor/html/107724908
八爻老骥 2020-07-30
  • 打赏
  • 举报
回复
引用 6 楼 蜗牛学编程的回复:
[quote=引用 4 楼 icoolno1 的回复:]你用Sql的command执行insert到excel里?跨数据库可以理解,这跨系统的操作能成功?
用在access数据库里是可以的,而且速度很快。但SQL数据库就不行,不知道为什么。 或者,有其他更好的方法吗?求指教[/quote] 那个同是office里边的,本就许多地方兼容可以互导的,sql和excel不是一个体系,报错就不奇怪了。
蜗牛学编程 2020-07-30
  • 打赏
  • 举报
回复
可否求老师们给一段SQL导出excel的代码?最多一次性导出几千行数据。 从网上找了好久,要不是代码跑不起来,要么就是跑百八十行都要十几二十秒,太慢了。 铺天盖地的SQL转EXCEL,却找不到合适的,好郁闷。。。。。
蜗牛学编程 2020-07-29
  • 打赏
  • 举报
回复
引用 4 楼 icoolno1 的回复:
你用Sql的command执行insert到excel里?跨数据库可以理解,这跨系统的操作能成功?
用在access数据库里是可以的,而且速度很快。但SQL数据库就不行,不知道为什么。 或者,有其他更好的方法吗?求指教
蜗牛学编程 2020-07-29
  • 打赏
  • 举报
回复
引用 3 楼 front333 的回复:
insert into openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\1.xls',[Sheet1$]) select * from test
老师,系统还是报错哈:无法创建链接服务器null的OLEDB访问借口microsoft.jet.oledb 4.0的实例
八爻老骥 2020-07-29
  • 打赏
  • 举报
回复
你用Sql的command执行insert到excel里?跨数据库可以理解,这跨系统的操作能成功?
张元浩_HY 2020-07-29
  • 打赏
  • 举报
回复
insert into openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\1.xls',[Sheet1$]) select * from test
正怒月神 2020-07-29
  • 打赏
  • 举报
回复
没这么玩过,你把 [Excel 8.0;database=" + filename + "] 改成这个试试看 MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;DATABASE=
蜗牛学编程 2020-07-29
  • 打赏
  • 举报
回复
还是不行呀,一样的报错信息,说什么指定的架构名称不存在

110,533

社区成员

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

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

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