Pergunta

Eu tenho um cenário em que um cliente poderia ter o Excel 2007 ou o Excel 2010 instalado, eu preciso ser capaz de exportar e importar arquivos do Excel que eles criam, o OLEDB não é uma opção, então eu usaria os serviços de interoperabilidade.

A questão é: quando eu codifiquei para 2010, não funcionou para 2007 e vice-versa, como posso fazer isso?

Posso importar as duas referências de alguma forma e definir o Excel dependendo da versão 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;
Foi útil?

Solução

não, você não pode ... você pode usar a versão anterior para ambos ... ou usar uma biblioteca de terceiros (gratuita ou comercial) que não precisa do Excel para ser instalada ou você pode usarCOM bruto para acessar o Excel, que seria muito menos confortável, mas permite essas coisas.

EDITAR - conforme comentários (obrigado a @Rup):

Você pode baixar a versão anterior do VSTO em http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=23656 que deve vir com a biblioteca Interop para 2007

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top