Выберите правильное использование для установленного Excel - PullRequest
1 голос
/ 20 октября 2011

У меня есть сценарий, в котором на клиенте может быть установлен либо Excel 2007, либо Excel 2010. Мне нужно иметь возможность экспортировать и импортировать файлы Excel, которые они создают, OLEDB не вариант, поэтому я собирался использовать службы Interop .

Вопрос: когда я кодировал для 2010 года, он не работал для 2007 года, и наоборот, как мне этого добиться?

Можно ли как-то импортировать обе ссылки и определить Excel в зависимости от установленной версии?

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;

1 Ответ

2 голосов
/ 20 октября 2011

нет, вы не можете ... вы можете использовать более низкую версию для обоих ... или использовать стороннюю библиотеку (бесплатную или коммерческую), которая вообще не требует установки Excel или вы можете использовать необработанный COM для доступа к Excel, который был бы гораздо менее удобным, но допускает такие вещи.

РЕДАКТИРОВАТЬ - согласно комментариям (спасибо @Rup):

Вы можете загрузить старую версию VSTO по адресу http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=23656, которая должна поставляться с библиотекой Interop для 2007

...