C#OWC11.DLL失敗: 80040154
時間: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相关推荐
- CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:載入報表失敗6/25
電腦由XP換成WIN2003,一切設定後運行報表出現: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:載入報表失敗 檢查 ...
- java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗
我有一個簡單的關係測試,我試圖運行使用Rest API創建一個獨特的節點(java-rest-binding)https://github.com/neo4j/java-rest-binding但不幸 ...
- TIPTOP报表提示:foreach: 字元轉換至數字程序失敗.
客制一个TIPTOP报表提示:foreach: 字元轉換至數字程序失敗. 把提示框的提示内容展开后内容如下: 01213, 00000, "MAX INSTANCES may not exc ...
- java file delete 不及时_java中File的delete()方法刪除文件失敗的原因
一般來說 java file.delete失敗 有以下幾個原因 1.看看是否被別的進程引用,手工刪除試試(刪除不了就是被別的進程占用) 2.file是文件夾 並且不為空,有別的文件夾或文件, 3.極有 ...
- php上传wmv文件格式,PHP WMV文件上傳失敗
我正在做一個PHP文件上傳的測試,但好像我的腳本不允許我上傳WMV.PHP WMV文件上傳失敗 這裏是PHP腳本我有 $target_path = "uploads/"; $tar ...
- hive源碼編譯(失敗記錄)
编译hive 源码的命令: mvn clean install -T 4C -DskinpTests 出现如下报错: [ERROR] Failed to execute goal org.apache ...
- 遠端桌面連線失敗,出現:遠端工作階段中斷 因為沒有遠端桌面用戶端存取使用權...
用戶遠程桌面用的好好的,某天出現這樣的提示不能使用,確認遠程服務器沒問題的 解決方法 電腦無法開啟遠端桌面工作階段的請按一下 [開始],按一下 [執行]. 輸入cmd,然後再按一下 [確定]. 在命令 ...
- host速度 mtk usb_Openwrt MTK USB3.0 識別UASP存儲失敗的解決方案
手裏有個MT7621的設備自己鼓搗鼓搗廢物利用用來做NAS用 發現之前用USB3.0的U盤都可以正常使用 換了USB3.0的移動硬盤盒無法識別出硬盤 執行lsusb -t發現該設備的驅動標示爲uas ...
- 服务器连接失敗如何修复,win10系统玩传奇世界显示连接服务器失败的修复方案...
有关win10系统玩传奇世界显示连接服务器失败的操作方法想必大家有所耳闻.但是能够对win10系统玩传奇世界显示连接服务器失败进行实际操作的人却不多.其实解决win10系统玩传奇世界显示连接服务器失败 ...
最新文章
- linux cpu平均利用率st,理解 CPU 利用率
- Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务-Eclipse和Maven项目
- mds算法python函数_分享python mds,sha256加密算法,c#对应sha256加密算法
- 沈志勇-百度大数据引擎与分析预测
- VUE 组件之间通信
- 几种常见的程序命名规则
- lrc歌词编辑器 android,Lrc歌词编辑器(LRC速配歌词)
- 智慧油气田可视化,打造油气田管控的“最强大脑”
- 聚类分析在SPSS中的应用
- Linux 下的 QQ 使用方案
- 2018年大连海事大学校赛(ACM竞赛高校联盟训练赛 第11场)题解
- Vue.js下载与安装
- chrome android 中文版下载,Chrome浏览器安卓版
- Unity3D开发工程师
- echarts 清除上一次的实例
- 问题 S: 除法问题(第四讲)
- 微信小程序,输入时键盘弹起,聊天输入框自动弹起,内容不顶起
- htmlmeta标签详细分析
- 前端渲染、服务器端渲染、同构渲染
- 用友erp沙盘_关于ERP培训,能聊的那些事。