時間:2020/09/17

背景:之前的舊版本項目(Windows2003 VS2008),發佈到新升級的電腦上(Windows2016 VS2010),導致一系列的問題,今天的問題是導出Excel報錯:由於發生下列錯誤,為具有 CLSID {0002E559-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80040154。 

大致問題:

1、ASP.NET 版本

2、Microsoft .NET Framework 版本

2、水晶報表問題(CRRedist2008_x86/CRRedist2008_x64),安裝這個大概可解決70%的dll報錯(因項目而異)

3、其他問題,具體問題具體分析(安裝Office也可解決一部份問題,尤其跟Excel有關的)

結果:FAIL!!我折騰了一上午,最終還是沒搞定,還是百度了個生成Excel的方法,不需要用OWC11.DLL的方法。

代碼如下:

    /// <summary>/// 生成csv文件/// </summary>/// <param name="report">就是一個SQL(是一個類去根據條件生成SQL)</param>public void ExportToSvc(Report report){DataAccess conn = DataAccessFactory.CreateDataAccess(Config.DatabaseConnection("ORACLEDB"));conn.Open();DataSet dt = conn.ExecuteDataset(report.SQLStatment);string FileName;FileName = fPage.Server.MapPath("..\\tempfiles\\" + fPage.Session.SessionID + "_" + DateTime.Now.Ticks.ToString() + ".csv");if (File.Exists(FileName)){File.Delete(FileName);}//先打印标头StringBuilder strColu = new StringBuilder();StringBuilder strValue = new StringBuilder();int i = 0;try{StreamWriter sw = new StreamWriter(new FileStream(FileName, FileMode.CreateNew), Encoding.GetEncoding("UTF-8"));for (i = 0; i <= dt.Tables[0].Columns.Count - 1; i++){strColu.Append(dt.Tables[0].Columns[i].ColumnName);strColu.Append(",");}strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符sw.WriteLine(strColu);foreach (DataRow dr in dt.Tables[0].Rows){strValue.Remove(0, strValue.Length);//移出for (i = 0; i <= dt.Tables[0].Columns.Count - 1; i++){if (dr[i].ToString().IndexOf(",") > 0)strValue.Append("\"" + dr[i].ToString().Replace(@"""", "") + "\"");// strValue.Append(dr[i].ToString().Replace(@"""", "") + "\"");else{if (dr[i].ToString() != "")//strValue.Append(" " + dr[i].ToString().Replace(@"""", ""));strValue.Append(dr[i].ToString().Replace(@"""", ""));elsestrValue.Append(dr[i].ToString().Replace(@"""", ""));}strValue.Append(",");}strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符sw.WriteLine(strValue);}sw.Close();GC.Collect();HttpResponse resp;resp = fPage.Response;resp.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");//  resp.ContentType = "text/csv";string DownFileName = DateTime.Now.Ticks.ToString() + ".csv";resp.AppendHeader("Content-Disposition", "attachment;filename=" + DownFileName);FileInfo MyFileInfo;long StartPos = 0, FileSize;MyFileInfo = new FileInfo(FileName);FileSize = MyFileInfo.Length;resp.WriteFile(FileName, StartPos, FileSize);resp.Flush();MyFileInfo.Delete();//resp.CacheControl = "no-cache";fPage.Response.End();}catch (Exception ex){throw ex;}finally{conn.Close();}}

參考文檔:

https://dotblogs.com.tw/chou/2013/06/14/105497

https://dotblogs.com.tw/henryli/2015/06/30/151686

https://petereagle1.wordpress.com/2011/03/08/%E7%99%BC%E7%94%9F%E4%B8%8B%E5%88%97%E9%8C%AF%E8%AA%A4%EF%BC%8C%E7%82%BA%E5%85%B7%E6%9C%89-clsid-%E7%9A%84%E5%85%83%E4%BB%B6%E6%93%B7%E5%8F%96-com-class-factory-%E5%A4%B1%E6%95%97/

https://social.msdn.microsoft.com/Forums/zh-TW/fad4bbcc-05d8-48b4-adee-d328f596067d/35531218392098629694clsid376793549235201245904063635299com-class?forum=232

C#OWC11.DLL失敗: 80040154相关推荐

  1. CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:載入報表失敗6/25

    電腦由XP換成WIN2003,一切設定後運行報表出現: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:載入報表失敗 檢查 ...

  2. java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗

    我有一個簡單的關係測試,我試圖運行使用Rest API創建一個獨特的節點(java-rest-binding)https://github.com/neo4j/java-rest-binding但不幸 ...

  3. TIPTOP报表提示:foreach: 字元轉換至數字程序失敗.

    客制一个TIPTOP报表提示:foreach: 字元轉換至數字程序失敗. 把提示框的提示内容展开后内容如下: 01213, 00000, "MAX INSTANCES may not exc ...

  4. java file delete 不及时_java中File的delete()方法刪除文件失敗的原因

    一般來說 java file.delete失敗 有以下幾個原因 1.看看是否被別的進程引用,手工刪除試試(刪除不了就是被別的進程占用) 2.file是文件夾 並且不為空,有別的文件夾或文件, 3.極有 ...

  5. php上传wmv文件格式,PHP WMV文件上傳失敗

    我正在做一個PHP文件上傳的測試,但好像我的腳本不允許我上傳WMV.PHP WMV文件上傳失敗 這裏是PHP腳本我有 $target_path = "uploads/"; $tar ...

  6. hive源碼編譯(失敗記錄)

    编译hive 源码的命令: mvn clean install -T 4C -DskinpTests 出现如下报错: [ERROR] Failed to execute goal org.apache ...

  7. 遠端桌面連線失敗,出現:遠端工作階段中斷 因為沒有遠端桌面用戶端存取使用權...

    用戶遠程桌面用的好好的,某天出現這樣的提示不能使用,確認遠程服務器沒問題的 解決方法 電腦無法開啟遠端桌面工作階段的請按一下 [開始],按一下 [執行]. 輸入cmd,然後再按一下 [確定]. 在命令 ...

  8. host速度 mtk usb_Openwrt MTK USB3.0 識別UASP存儲失敗的解決方案

    手裏有個MT7621的設備自己鼓搗鼓搗廢物利用用來做NAS用 發現之前用USB3.0的U盤都可以正常使用 換了USB3.0的移動硬盤盒無法識別出硬盤 執行lsusb -t發現該設備的驅動標示爲uas ...

  9. 服务器连接失敗如何修复,win10系统玩传奇世界显示连接服务器失败的修复方案...

    有关win10系统玩传奇世界显示连接服务器失败的操作方法想必大家有所耳闻.但是能够对win10系统玩传奇世界显示连接服务器失败进行实际操作的人却不多.其实解决win10系统玩传奇世界显示连接服务器失败 ...

最新文章

  1. linux cpu平均利用率st,理解 CPU 利用率
  2. Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务-Eclipse和Maven项目
  3. mds算法python函数_分享python mds,sha256加密算法,c#对应sha256加密算法
  4. 沈志勇-百度大数据引擎与分析预测
  5. VUE 组件之间通信
  6. 几种常见的程序命名规则
  7. lrc歌词编辑器 android,Lrc歌词编辑器(LRC速配歌词)
  8. 智慧油气田可视化,打造油气田管控的“最强大脑”
  9. 聚类分析在SPSS中的应用
  10. Linux 下的 QQ 使用方案
  11. 2018年大连海事大学校赛(ACM竞赛高校联盟训练赛 第11场)题解
  12. Vue.js下载与安装
  13. chrome android 中文版下载,Chrome浏览器安卓版
  14. Unity3D开发工程师
  15. echarts 清除上一次的实例
  16. 问题 S: 除法问题(第四讲)
  17. 微信小程序,输入时键盘弹起,聊天输入框自动弹起,内容不顶起
  18. htmlmeta标签详细分析
  19. 前端渲染、服务器端渲染、同构渲染
  20. 用友erp沙盘_关于ERP培训,能聊的那些事。

热门文章

  1. 数字化转型的湖仓一体道路,企业到底该怎么走?
  2. javascript请求天气API大全
  3. 前端基础学习-VS code修改主题颜色与背景
  4. Python 标准库
  5. 人这一生需要认真读的几本书
  6. css 炫酷鎏金字体,颜色渐变
  7. PTA map 统计英文单词个数
  8. 20fall香港科技大学数据驱动建模硕士从申请到面试到offer
  9. java截取字符串的长度substring()
  10. 自定义header-php跨域