如何在.NET/C#中實現這一目標?通過Microsoft.Office.Interop.Excel確定Excel版本/文化
2
A
回答
0
閱讀您的app.config文件,因爲它會放置在那裏的參考:
<compilation debug="false">
<assemblies>
<add assembly="Office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
</assemblies>
</compilation>
通過「閱讀」,您可能需要打開文件並讀取其中的內容,因爲我不認爲你可以專門讀取組件。
6
你可以使用此代碼段:(從我的一個項目採取的,所以不能保證工作的開箱)
Microsoft.Office.Interop.Excel.Application tExcel = new Application();
CultureInfo cSystemCulture = Thread.CurrentThread.CurrentCulture;
CultureInfo cExcelCulture = new CultureInfo(tExcel.LanguageSettings.get_LanguageID(
Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI));
try
{
Thread.CurrentThread.CurrentCulture = cExcelCulture;
double tVersion;
bool tParseSucceded = double.TryParse(tExcel.Version, out tVersion);
// 12 is the first version with .xlsx extension
if (tVersion > 11.5)
cDefaultExtension = ".xlsx";
else
cDefaultExtension = ".xls";
}
catch (Exception aException)
{
cLogger.Debug("error retrieving excel version.", aException);
cLogger.Error("error retrieving excel version.");
}
finally
{
Thread.CurrentThread.CurrentCulture = cSystemCulture;
}
0
void Method1()
{
string strEVersionSubKey = "\\Excel.Application\\CurVer"; //HKEY_CLASSES_ROOT/Excel.Application/Curver
string strValue = null;
string strVersion = null;
RegistryKey rkVersion = null;
rkVersion = Registry.ClassesRoot.OpenSubKey(strEVersionSubKey, false);
strValue = (string)rkVersion.GetValue(string.Empty);
strValue = strValue.Substring(strValue.LastIndexOf(".") + 1);
switch (strValue) //Determine Version
{
case "7":
strVersion = "95";
break;
case "8":
strVersion = "97";
break;
case "9":
strVersion = "2000";
break;
case "10":
strVersion = "2002";
break;
case "11":
strVersion = "2003";
break;
case "12":
strVersion = "2007";
break;
case "14":
strVersion = "2010";
break;
case "15":
strVersion = "2013";
break;
case "16":
strVersion = "2016";
break;
}
MessageBox.Show("Excel " + strVersion + " Installed!");
}
+0
您能詳細解釋一下並解釋您的解決方案嗎?如果您只刪除了一段代碼,它很可能會因質量差而被刪除。更好地解釋你在做什麼以及爲什麼這可能解決最初的問題。 – user1438038 2015-12-23 12:54:08
相關問題
- 1. C#如何確定Excel文件版本
- 2. 通過查詢確定Hive版本
- 3. 通過JMX確定Java版本
- 4. HTML - 通過excel打開通過explorer.exe /文件進行本地化
- 5. 通過編程識別Excel版本
- 6. Excel的dll for Microsoft.Office.Interop.Excel
- 7. 通過版本
- 8. 通過確定第一數量的Excel
- 9. Excel到DataTable?不使用Microsoft.Office.Interop.Excel
- 10. 如何確定給定文件版本的ClearCase目錄版本?
- 11. 通過WinAPI確定英特爾高清顯卡版本
- 12. 確定庫版本?
- 13. 確定Android版本
- 14. Excel SUMIFS通過一系列數字格式化爲文本
- 15. C#通過OLEDB從Excel中提取格式化的文本
- 16. 通過Bash複製/區分未版本化的SVN文件
- 17. $ state未定義。通過jhipster版本4
- 18. Excel:通過宏位置文本框
- 19. 通過文件版本合併TFS
- 20. 通過文件的版本號
- 21. openssl版本通過_ssl.pyd文件
- 22. 確定文件的最新版本(python)
- 23. 格式化文本文件通過PHP
- 24. 將版本化文件替換爲非版本化文件
- 25. 通過Mercurial /通用版本控制分解文件的正確方法?
- 26. 通過git標籤自動化Android版本的Gradle腳本
- 27. 無法加載文件或程序集「的Microsoft.Office.Interop.Excel,版本= 14.0.0.0,文化=中性公鑰= 71e9bce111e9429c」
- 28. RestAPI版本通過標頭
- 29. 警告通過版本2.0.1
- 30. 通過NuGet的Castle.Facilities.NHibernateIntegration版本?
而不是閱讀,你可以使用反射app.config文件名稱空間與大會myAss = Assembly.GetAssembly(type)其中type是從Excel程序集中的一種對象。 FullPath屬性將返回與app.config中存儲的信息相同的信息,您可以解析該信息。 – Jay 2010-05-26 19:20:00
使用反思我可以確定Excel的版本和文化,但我仍然需要了解Office/Excel安裝語言。我如何發現? – DotNetter 2010-05-27 08:08:04