Variant ExcelApp;
Variant VarSheet;
AnsiString fileName = "xxx.xlt";
AnsiString str = 0;
try
{
ExcelApp = ::CreateOleObject("Excel.Application");
}
catch(const Exception &E)
{
ShowMessage("Microsoft Excel啟動失敗,請確定是否正確安裝Microsoft Excel軟體!\nErrorInfo:" + AnsiString(E.ClassName())+ E.Message,0);
return;
}
ExcelApp.PS("Visible", (Variant)true);
if(!FileExists(fileName))
{
VarSheet = Unassigned;
ExcelApp = Unassigned;
return;
}
try
{
ExcelApp.PG("workbooks").FN("Open", fileName.c_str());
VarSheet = ExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
}
catch(...)
{
VarSheet = Unassigned;
ExcelApp = Unassigned;
return;
}
在創建應用時就出例外了
例外出現在一部分機器上,已經重新安裝office
客戶機器作業系統:Win7 Office版本:2010 pro
例外資訊:
EOleSysError不支持此介面
求大神解決
uj5u.com熱心網友回復:
等ole專業戶老妖擼過
uj5u.com熱心網友回復:
跪謝:專業擼過
uj5u.com熱心網友回復:
BCB哪個版本的?uj5u.com熱心網友回復:
ExcelApp = ::CreateOleObject("Excel.Application");改成
bcb6,2007
ExcelApp=Variant::CreateObject("excel.application");
2010及之后
ExcelApp=Variant::CreateObject(L"excel.application");
uj5u.com熱心網友回復:
這問題不太好處理,對比一下出錯和不出錯的系統,安裝的軟體有什么不同?uj5u.com熱心網友回復:
曾遇到過的情況是,用戶幾天不關機,然后出現這故障,重新開機后就好了。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
在我的機器上是2010的呢,也是可以的!
uj5u.com熱心網友回復:
CreateOleObject的引數是一個AnsiString物件(低版本)或UnicodeString物件(高版本),代入的引數,無論是char *,還是wchar_t *,都會自動轉成對應的資料型別。也就是說:用 "Excel.Application" 和 L"Excel.Application" 是沒有什么區別的。
為了保證創建Office物件的成功,盡量安裝原生的Office程式。
uj5u.com熱心網友回復:
妖哥:office我已經安裝了最新版本的程式啦!
使用報表控制元件:Report Machine倒是可以生成Excel檔案的。
初步猜測會不會因為系統是通過ghost安裝的,造成檔案缺失?
如果是的話,我打算直接替換元件,就是不知道這個元件都要替換哪些?
目前替換了:system32/ 下的ole32.dll依然無法解決此問題。
求妖哥,各位大仙支招!
uj5u.com熱心網友回復:
Ghost的系統,這個就不敢保證了。替換ole32.dll未必有什么作用。uj5u.com熱心網友回復:
難道要求客戶重裝系統嗎?
不行就用報表控制元件處理了,但是報表控制元件不知道怎么處理兩個資料集。
uj5u.com熱心網友回復:
我也遇到了這種問題,不過我的是office2010可以正常,office2003就保錯了。用的函式就是這個vExcelApp = Variant::CreateObject("Excel.Application");uj5u.com熱心網友回復:
請問一下各位如何才能使office2003也匯出正常哪?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134335.html
標籤:基礎類
上一篇:ACM 音頻 問題
