Domanda

Ho uno scenario in cui un client potrebbe avere installato Excel 2007 o Excel 2010, devo essere in grado di esportare e importare i file Excel che creano, OLEDB non è un'opzione, quindi avrei utilizzato i servizi di interoperabilità.

La domanda è che quando ho programmato per il 2010 non ha funzionato per il 2007 e viceversa come posso ottenere questo risultato?

Posso importare entrambi i riferimenti in qualche modo e definire Excel a seconda della versione installata?

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;
È stato utile?

Soluzione

no non puoi ... puoi utilizzare la versione inferiore per entrambi ... oppure utilizzare una libreria di terze parti (gratuita o commerciale) che non necessita affatto dell'installazione di Excel oppure puoi utilizzareraw COM per accedere a Excel che sarebbe molto meno comodo ma consente queste cose.

EDIT - come da commenti (grazie a @Rup):

Puoi scaricare la versione precedente di VSTO all'indirizzo http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=23656 che dovrebbe essere fornito con la libreria Interop per il 2007

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top