c# EXCEL 导入到数据库

u010703853 2015-12-16 07:26:56
RT,我在程序debug调试的时候 可以将excel导入到数据库中,可是访问网页的时候,再导入就不行了。
其中 excel为2003 数据库为SQL 2005 服务器为 win XP系统,X64位
代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileName = Server.HtmlEncode(FileUpload1.FileName);
string extension = System.IO.Path.GetExtension(fileName);
if ((extension == ".xlsx") || (extension == ".xls"))
{
ExalToSql();
}
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('请选择需要上传的Excel!!!')</script>");
return;
}
}

private void ExalToSql()
{
string sheet = FileUpload1.FileName.ToString();
string path = Server.MapPath(FileUpload1.FileName);
FileUpload1.PostedFile.SaveAs(path);//保存文件
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";Extended Properties='Excel 8.0;IMEX=1'";
//建立EXCEL的连接
OleDbConnection objConn = new OleDbConnection(sConnectionString);
int count = 0;//用来记录出错的条数
try
{
string strCom = string.Format("select * from [upload$] ", sheet);
objConn.Open();

OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, objConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[upload$]");
DataTable dt = ds.Tables[0];

foreach (DataRow myDrv in dt.Rows)
{
count++;
if (!string.IsNullOrWhiteSpace(myDrv[1].ToString().Trim()))
{
/////// 先判断一下 是否已经上传过该笔数据
string XXX = "0";
string sqlXXX = " select COUNT(*) TOT from plate_issue_upload WHERE UP_SCORD=" + myDrv[1].ToString().Trim() + " AND UP_SORD=" + myDrv[2].ToString().Trim() + " AND " +
" UP_LINE=" + myDrv[3].ToString().Trim() + " AND UP_MORD='" + myDrv[4].ToString().Trim() + "' AND UP_MPROD='" + myDrv[5].ToString().Trim() + "' AND " +
" UP_QTY=" + myDrv[6].ToString().Trim() + " AND UP_MWHS='" + myDrv[7].ToString().Trim() + "' AND UP_MLLOC='" + myDrv[8].ToString().Trim() + "'";
SqlDataReader myreader;
myreader = SQL.GetMDCSQL(sqlXXX);
while (myreader.Read())
{
XXX = myreader["TOT"].ToString(); //0表示没有上传过该笔数据 1 表示已经上传过该笔记录
}
myreader.Close();
if (XXX == "0")
{
string sql = @"insert into plate_issue_upload (up_time,up_scord,up_sord,up_line,up_mord,up_mprod,up_qty,up_mwhs,up_mlloc,up_flag,UP_ISSUE) " +
"values ( GETDATE(), " +
"" + myDrv[1].ToString().Trim() + ", " +
"" + myDrv[2].ToString().Trim() + ", " +
"" + myDrv[3].ToString().Trim() + ", " +
"'" + myDrv[4].ToString().Trim() + "', " +
"'" + myDrv[5].ToString().Trim() + "', " +
"" + myDrv[6].ToString().Trim() + ", " +
"'" + myDrv[7].ToString().Trim() + "', " +
"'" + myDrv[8].ToString().Trim() + "', " +
"'A',0)";
SQL.ExcutesMDCSQL(sql);
}
}
}
}
catch
{
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('第" + count.ToString() + "条数据出错,请核对!!!')</script>");
return;
}
finally
{
objConn.Close();//关闭EXCEL的连接
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('上传成功!!!')</script>");
}
}
...全文
277 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 11 楼 From_TaiWan 的回复:
同时,你程序里也注解掉try catch,让问题暴露。Exception不如去掉try catch来的直接
谢谢你,启发了我,我把try catch去掉了,然后运行程序,提示的错误为:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。 最后的我的解决办法为:在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/”启用32位应用程序” 设置为true即可!!! (服务器为X64位 ,当时默认32位为false)
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
我猜想,你应该将excel文件放到服务器(放站点文件的那台计算机)里相应的目录下 你在你本机debug时,站点和excel都在你本机,发布网站后,就不同了,网页文件在服务器,而excel还在你的电脑
  • 打赏
  • 举报
回复
引用 6 楼 From_TaiWan 的回复:
服务端安装excel了吗 对于xlsx,驱动是Provider=Microsoft.ACE.OLEDB.12.0;,分情况处理
安装了excel 2003
  • 打赏
  • 举报
回复
引用 7 楼 From_TaiWan 的回复:
还有,你是上传excel后,马上导入数据库,想办法能有个间隔,上传文件毕竟需要时间,进程有可能超时而终止
Thread.Sleep(8000); 我延时的8秒 还是同样的问题。调试的时候,可以上传到数据库,可是在访问服务器web上 还是不行呀
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
还有,你是上传excel后,马上导入数据库,想办法能有个间隔,上传文件毕竟需要时间,进程有可能超时而终止
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
服务端安装excel了吗 对于xlsx,驱动是Provider=Microsoft.ACE.OLEDB.12.0;,分情况处理
  • 打赏
  • 举报
回复
引用 3 楼 andywangguanxi 的回复:
什么叫Debug的时候行,访问网页不行。 你是Web项目,Debug的时候难道不是从网页上上传你的Excel表格进行导入的吗? 你的意思是web项目发布到服务器之后,再上传就无效了吗
恩,是的。web项目发布到服务器之后,再上传就无效了,但是服务器上有上传的excel。
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
同时,你程序里也注解掉try catch,让问题暴露。Exception不如去掉try catch来的直接
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
先捕捉错误吧 首先确定文件是不是上传成功 其次IIS里不要指定页面错误转向(在ASP.NET和iis里都操作),让错误暴露出来;同时,浏览器启用错误调试,还有不显示友好错误 再次在你的服务器里,上传一个文件,看会不会成功,服务器里的浏览器,也照上面设置;你可以手动在指定目录放一个excel文件,看能不能成功,这样就可以确定问题在上传,还是在写数据库
EdsionWang 2015-12-16
  • 打赏
  • 举报
回复
什么叫Debug的时候行,访问网页不行。 你是Web项目,Debug的时候难道不是从网页上上传你的Excel表格进行导入的吗? 你的意思是web项目发布到服务器之后,再上传就无效了吗
江南小鱼 2015-12-16
  • 打赏
  • 举报
回复
让catch捕捉下Exception,看报错了么?报什么错
abz7676 2015-12-16
  • 打赏
  • 举报
回复
再导入的时候报什么错?
下载代码方式:https://pan.quark.cn/s/28492da20c79 依据所提供的文件资料,本资源将系统地探讨FPGA(即现场可编程门阵列)的核心概念、其在视频图像技术领域的入门及进阶知识要点,以及图像处理算法的实现方法。此外,还将对VIPBoardBig这一特定FPGA开发板的详细资料和使用途径进行深入剖析。 FPGA的入门与进阶学习主要涉及以下核心内容: 1. FPGA的基础概念:FPGA是一种能够通过编程进行配置的集成电路,主要目的是达成硬件逻辑的可重构特性。该类芯片由大量的可配置逻辑模块(CLB)、输入输出模块(IOB)以及可编程互连资源共同构成。 2. FPGA开发板与相关套件:FPGA开发板是一种用于FPGA芯片学习和测试的硬件平台,通常配备有基础的外设设备,例如LED指示灯、按键开关、LCD显示屏、串口通信接口等。套件则通常包含硬件板卡、技术文档、相关资源,以及可能的软件工具和示例代码集。VIPBoardBig即为本教程选用的FPGA开发板,拥有特定的硬件配置和功能特性。 3. FPGA的开发流程:FPGA开发一般涉及硬件描述语言(HDL)的设计与仿真阶段,常用语言为Verilog或VHDL。随后,借助综合工具将设计蓝图转化为FPGA内部的逻辑网络,最终通过编程设备将配置文件传输至FPGA芯片中,从而实现设计的预期功能。 4. 外设开发与设计工作:涵盖LED显示控制、键盘驱动、LCD显示驱动、UART串口设计等基础外设的开发任务。这部分知识将引导学习者掌握如何在FPGA平台上管理和运用这些基础外设。 5. VGA驱动显示与字符显示测试:VGA(Video Graphics Array)是一种视频传输接口标准,能够支持640x480...
内容概要:本文系统阐述了企业在搭建官方知识库后如何通过“7步锚定法”实现GEO(生成式引擎优化)的落地,重点在于从知识库走向内容矩阵的战略升级。文章指出知识库仅为起点,真正的核心是让大模型“信任并推荐”企业内容。为此提出“一个主战场+多个品牌布局”的策略,强调需根据行业特性选择高商业流量的大模型(如豆包、文心一言、通义千问等),而非工具性模型(如ChatGPT、Claude)。通过业务场景画像、大模型流量测绘、采信逻辑拆解、内容架构设计、语义关键词埋点、信源建设与效果迭代七步法,构建高质量、高可信度的内容体系,并警惕“全模型覆盖、内容堆砌、一套内容通用、忽视第三方平台”四大误区。最终指出GEO本质是一场认知战,比拼的是对大模型逻辑与客户需求的理解深度及长期主义投入。; 适合人群:已完成官方知识库搭建、希望提升AI引用率与获客效率的企业市场负责人、品牌运营、数字营销从业者及SEO/GEO优化相关人员。; 使用场景及目标:①指导企业科学选择主攻大模型并制定差异化内容策略;②构建符合大模型采信逻辑的高质量内容矩阵;③避免常见GEO落地误区,提升AI搜索下的品牌曝光与转化效果;④建立可持续优化的数据反馈闭环。; 阅读建议:建议结合自身行业特征与客户决策路径,逐步实践“7步法”,优先聚焦单一主战场打透,注重内容质量与第三方权威信源建设,坚持3-6个月持续投入以观察真实效果。

111,129

社区成员

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

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

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