Seleccione el uso correcto para Excel instalado
-
27-10-2019 - |
Pregunta
Tengo un escenario en el que un cliente podría tener instalado Excel 2007 o Excel 2010 instalado, necesito poder exportar e importar archivos de Excel que ellos crean, OLEDB no es una opción, así que iba a usar los servicios de Interop.
La pregunta es cuando codifiqué para 2010 no funcionó para 2007 y viceversa, ¿cómo puedo lograrlo?
¿Puedo importar ambas referencias de alguna manera y definir Excel según la versión instalada?
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range xlRange;
object misValue = System.Reflection.Missing.Value;
pbarExcelGenerate.Visible = true;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Name = "Material Results";
pbarExcelGenerate.Value = 5;
xlRange = xlWorkSheet.get_Range("a1", "b1");
xlRange.Merge(false);
xlRange.Value = "Material Name";
xlRange.HorizontalAlignment = 3;
xlRange.Font.Bold = true;
xlRange.Font.Size = 16;
Solución
no, no puede ... puede usar la versión inferior para ambos ... o usar una biblioteca de terceros (gratuita o comercial) que no necesita que Excel esté instalado en absoluto o puede usarCOM sin formato para acceder a Excel, que sería mucho menos cómodo pero permite tales cosas.
EDITAR - según los comentarios (gracias a @Rup):
Puede descargar la versión anterior de VSTO en http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=23656 que debería venir con la biblioteca Interop para 2007