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;
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top