- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了 Windows 服务,它需要每 2 小时创建 Excel。但是它给我一个错误如下
Exception from HRESULT: 0x800A03EC
第一次它创建 excel 文件。但第二次它给出错误。尝试了很多东西但都失败了。请帮助我。
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005.
此错误也会在第一个错误出现后出现。
public void WriteExcel()
{
string ExcelGen = "ExcelGen";
try
{
string fileNm = DateTime.Now.ToString("dd-MM-yyyy_HH") + ".xls";
string path = AppDomain.CurrentDomain.BaseDirectory + "Uploads\\" + fileNm;
string ServiceDbName = ConfigurationManager.AppSettings["ServiceDBName"].ToString();
string ServiceLMName = ConfigurationManager.AppSettings["ServiceTable"].ToString();
int Cnt = Service1.Counter;
Service1.AddLog("EXCEL STEP 1");
Microsoft.Office.Interop.Excel.Application objexcelapp = new Microsoft.Office.Interop.Excel.Application();
objexcelapp.Application.Workbooks.Add(Type.Missing);
objexcelapp.Columns.ColumnWidth = 25;
Service1.AddLog("EXCEL STEP 1.1");
MySqlConnection Conn = new MySqlConnection(ConfigurationManager.AppSettings["Conn"].ToString());
MySqlCommand inCmd = new MySqlCommand("select HT_LeadCode as 'LeadCode',right(lead_phone1,10) as 'Mobile',idg_fnc_GetDispositionDescription(lead_service_id, lead_last_dial_status) as 'Status' from " + ServiceDbName + "." + ServiceLMName + " where lead_status ='F' and HT_LeadCode <> '' and ifnull(HT_UpldFlag,'N') = 'N'", Conn);
Conn.Open();
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(inCmd);
da.Fill(ds);
Service1.AddLog( "EXCEL STEP 2");
string leadCodes = "";
foreach (System.Data.DataTable table in ds.Tables)
{
for (int i = 1; i < table.Columns.Count + 1; i++)
{
Service1.AddLog(" i : " + i.ToString());
objexcelapp.Cells[1, i] = table.Columns[i - 1].ColumnName;
}
for (int j = 1; j < table.Rows.Count+1; j++)
{
for (int k = 1; k < table.Columns.Count+1; k++)
{
Service1.AddLog("j & k : " + j.ToString()+ " & " + k.ToString());
objexcelapp.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
if(k==0)
leadCodes += table.Rows[j].ItemArray[k].ToString() + ",";
}
}
}
Service1.AddLog("LeadCodes : "+leadCodes);
leadCodes = leadCodes.Substring(0, leadCodes.Length - 1);
Service1.AddLog("LeadCodes : " + leadCodes);
inCmd = new MySqlCommand("update " + ServiceDbName + "." + ServiceLMName + " set HT_UpldFlag = 'Y' where lead_status ='F' and HT_LeadCode <> '' and ifnull(HT_UpldFlag,'N') = 'N' ", Conn);
inCmd.ExecuteNonQuery();
Service1.AddLog( "EXCEL STEP 3");
Service1.AddLog( "'" + path + "'" + " File is Created");
objexcelapp.ActiveWorkbook.SaveCopyAs(path);
objexcelapp.ActiveWorkbook.Saved = true;
objexcelapp.Quit();
Conn.Close();
Service1.AddLog( "EXCEL STEP 4");
Service1.AddLog( "UPLOAD THREAD STARTING");
Activity act = new Activity();
act.Upload();
}
catch (Exception ex)
{
Service1.AddLog( "WriteExcel Err : " + ex.Message);
}
}
当我运行服务时,它是第一次创建 excel 文件,但在间隔发生时。它给出了上述错误。
最佳答案
吞咽。
我已经多次看到 0x800A03EC 错误,它可能意味着任何事情......
你可能想试试这个......
获取此 free C# library 的副本使用创建 .xlsx 文件OpenXML 库,而不是 VSTO。它使用 OpenXmlWriter
库写入文件,因此如果有大量数据,您不会遇到内存不足的问题。
像以前一样通过填充 ds 数据集创建 Excel 文件,然后使用一行代码:
CreateExcelFile.CreateExcelDocument(ds, "你的Excel文件名.xlsx");
如果您不想走这条路,我建议您处理掉 objexcelapp
变量。这是一个 COM 对象,如果您不专门将其杀死,它可能会保持打开/使用状态。
if (objexcelapp != null)
Marshal.ReleaseComObject(objexcelapp);
多年来我们遇到了很多 VSTO 问题,现在,尽可能少地使用它。
希望这对您有所帮助。
关于c# - HRESULT 异常 : 0x800A03EC Error While creating Excel file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31989879/
有人可以帮我解码这个 HResult 吗?这是什么意思?我知道消极代表着失败。剩下的 10 位怎么样? 我引用了MSDN HResult文章here ,但我不确定如何确定我的设施和代码位是什么。 更多
假设我有一个设计得不太好的 COM 接口(interface),并且某些类在逻辑上无法实现它的方法之一。 例如,有一些方法,如 Explode()许多类只是不能合理地“爆炸”,但仍然必须实现该方法并需
嗨,我设计了一个控制台应用程序来测试我的 C++ 项目(.Net Framework 3.5)。我为此应用程序创建了一个设置并将其安装在虚拟机上以进行测试。但是每当我在虚拟机上运行这个已安装的应用程序
是否有解释错误代码的列表。 Eks:HRESULT:0x81070215 没有告诉我什么时候出错了? 最佳答案 WinError.h 我的机器上有以下路径,你的也类似: C:\Program File
我正在开发一个供 Microsoft .NET 和 COM 组件使用的 Microsoft .NET 程序集。我正在编写托管代码,并且必须指出何时为类中的方法指定了不正确的参数。当出现参数异常时,我需
我在 IUnknown 派生的 COM 接口(interface)中有一个函数: HRESULT GetPassword( [in] long bufferLength, [out] WCHAR* b
类似问题was asked before ,但我还没有在那里找到一些答案。 据我所知,为了制作自定义 HRESULT 代码,我创建了一个 .mc 文件,我在其中描述代码,然后编译它并获得一个 .h 文
我已经有一个使用大量 COM 和 HRESULTS 的项目。无论如何,我想知道是否可以定义自己的 HRESULT,并且能够将 FormatMessage() 用于我们自己的 HRESULT? 我翻遍了
我发现有时在 IO 操作中常见 IOException被抛出。我可以使用 Marshal.GetHRForException(Exception e)方法(找到 here )以确定具体的错误代码。之后
感谢任何帮助: 我正在 VS2010 中开发一个与 Excel 交互的 C#.Net 应用程序。该应用程序在我的本地计算机上正常运行。但是,上传到远程 Windows 2003 服务器会破坏应用程序。
我在使用 Windows.Media.Capture 命名空间中的 MediaCapture 对象时收到此异常消息 Exception from HRESULT: 0xC00D36B4。当我尝试使用
十进制:143196173 十六进制:0x889000D 调用 IAudioSessionControl2->GetProcessId() 的结果. GetLastError = 126* Messa
我只是花了 way 太长时间试图诊断为什么在下面的代码片段中,ProcessEvent() 方法似乎忽略了 false 我为 aInvokeEventHandler 传入的值: HRESULT CEv
以下 EndDraw() 函数返回 HRESULT 错误代码: http://msdn.microsoft.com/en-us/library/windows/desktop/dd371924%28v
我需要将 HRESULT 值作为命令行参数传递给程序。我本来打算通过传递十六进制值来做到这一点,例如: >receiver.exe 0x80048836 我正在尝试使用 wcstol 将此字符串表示形
我希望能够执行与 FormatMessage 等效的操作 - 生成用于调试甚至运行时构建的文本消息,可以报告一些常见的 HRESULT,甚至吐出诸如严重性、它的功能等信息是,可能还有错误代码的描述。
为什么在定义错误/HRESULT 处理/日志记录时会选择或不选择使用宏? 我正在处理一个通过接口(interface)调用的错误处理类,因此我可以使用 Boost 共享指针在我需要的时间和地点调用该类
这个问题在这里已经有了答案: Is there a way to get the string representation of HRESULT value using win API? (4 个
我在 Windows Vista 上使用 .NET Framework 6.0 版。我最近安装了一个显示图表的程序。当我打开它时,我收到一条来自 Microsoft .NET 框架的错误消息: Cla
我想测试下面的代码: private bool TestException(Exception ex) { if ((Marshal.GetHRForException(ex) & 0xFFF
我是一名优秀的程序员,十分优秀!