Selecione o correto usando para Excel instalado
-
27-10-2019 - |
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;
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