[英]c# Excel Application File Format issue
我有一個小問題,我在StackOverFlow上找不到任何解決方案。 情況:我有一個可以自動打開EXCEL應用程序的應用程序。 當它打開時,立即顯示一個對話框,提示“ xxx的文件格式和擴展名不匹配。該文件可能已損壞或不安全...”,我正在嘗試創建一個專注於此正在運行的EXCEL應用程序的應用程序並點擊“是”並使用VERSION 2007重新保存excel,因此不會再次出現此錯誤消息。
這是我到目前為止所擁有的:
var excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
var c = excelApp.ActiveDialog;
不確定如何使用excelApp變量在YES上執行單擊事件。 我也嘗試過
foreach (Process proc in Process.GetProcesses())
{
if (proc.MainWindowTitle.Contains("Excel"))
....
}
2017年11月6日:這是我到目前為止所擁有的:
var oExcelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
Process[] processlist = Process.GetProcessesByName("Excel"); //Shows number of running Excel apps
foreach (Process theprocess in processlist) //foreach Excel app running
{
if (oExcelApp.Workbooks.Count >= 0) //for worbooks in each Excel app
{
foreach (Excel.Workbook wkb in oExcelApp.Application.Workbooks)
{
wkb.SaveAs(filePath, Excel.XlFileFormat.xlExcel8);
wkb.Close(true, null, null);
Marshal.FinalReleaseComObject(wkb);
}
oExcelApp.Workbooks.Close();
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
oExcelApp.Quit();
Marshal.ReleaseComObject(oExcelApp);
}
僅當開始時沒有錯誤消息時,此方法才有效。 如果進程自動打開excel並顯示錯誤消息,這將引發異常,因為應用程序正忙於錯誤消息。
我不知道一種完全按照您的描述進行操作的方法-攔截應用程序中的對話框。
我認為您想做的是首先讓Excel暫停警告。 您可以通過將DisplayAlerts
屬性修改為false來實現。
var excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
excelApp.DisplayAlerts = false;
// This should not give you any warnings
excelApp.Workbooks.Open("c:/cdh/test.xls");
完成后,將事情恢復原樣:
excelApp.DisplayAlerts = true;
嗨,您可以創建另一個應用程序,在其中您可以編寫Excel關閉警報框的邏輯並從主應用程序執行
foreach (Process proc in Process.GetProcesses())
{
if (proc.MainWindowTitle.Contains("Excel"))
....
},
因此,無需用戶交互即可關閉此警報框,並且您可以在數據庫中保存其他警報消息,並檢查此消息是否在警報框中,您可以關閉
感謝你的幫助。 我能夠解決此問題,並使用REGEDIT禁用Microsoft Excel Application的所有警報。 這是解決這種情況的唯一方法。 只需發布答案以幫助處於相同情況的其他人:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.