在线等,C# 读取excel文件时报错 ”ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默“

shiguangfeishi 2017-09-05 07:56:13
VS运行程序就会报错,如果IIS发布就不会
因为需要跟踪,必须要用VS运行,程序和错误如下

if (File.Exists(AppDomain.CurrentDomain.BaseDirectory
+ "UploadedFiles\\" + filename) == false)
{
throw new Exception("服务器目录找不到需要导入的文件");
}

DataTable dt = new DataTable();
string fileExtension = System.IO.Path.GetExtension(filename).ToLower();

try
{
OdbcConnection Connnection = new OdbcConnection();

String strExcelConn = "";

strExcelConn = "DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);" +
"UID=admin;" +
"UserCommitSync=Yes;" +
"Threads=3;" +
"SafeTransactions=0;" +
"ReadOnly=1;" +
"PageTimeout=5;" +
"MaxScanRows=8;" +
"MaxBufferSize=2048;" +
"FIL=excel 12.0;" +
"DriverId=1046;" +
"DBQ=" + AppDomain.CurrentDomain.BaseDirectory + "UploadedFiles\\" + filename;

Connnection.ConnectionString = strExcelConn;

OdbcCommand cmd = new OdbcCommand();
cmd.Connection = Connnection;
cmd.CommandText = "SELECT * FROM [SHEET1$]";
Connnection.Open();

OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
oda.Fill(dt);

Connnection.Close();
}
catch (Exception ex)
{
throw ex;
//throw new Exception("无法读取表格数据");
}
...全文
645 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2017-09-06
  • 打赏
  • 举报
回复
没用过这种连接方式 strExcelConn = "DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);" + "UID=admin;" + "UserCommitSync=Yes;" + "Threads=3;" + "SafeTransactions=0;" + 检查下你当前程序所在位置,会不会是文件访问权限问题 检查你的程序要想运行,需要哪些IIS级的配置 从错误提示看,是连接excel的问题,还要检查excel文件是不是已经打开
homesos 2017-09-05
  • 打赏
  • 举报
回复
同楼上,我也推荐用NPOI,挺好用,对环境也没有依赖。
_小黑_ 2017-09-05
  • 打赏
  • 举报
回复
推荐使用 npoi 导入导出 excel

110,534

社区成员

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

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

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