2012-03-12 5 views
1

В моей программе C# я использую excel add in для записи данных в файл excel, ниже приведен пример того, как я пытался получить доступ к листу excel.Excel-надстройка, как написать на листе excel

private void button1_Click(object sender, EventArgs e) 
     { 
       Excel.Application xl_app = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 
       Excel.Workbook xl_workbook = null; 
       xl_workbook = xl_app.ActiveWorkbook; 
       Excel.Worksheet sheet = null; 
       sheet = (Excel.Worksheet)xl_workbook.Worksheets.get_Item("Sheet1"); 
       sheet.Cells[1, 1] = "Name"; 

     } 

При запуске этого я получаю ошибку говоря «объекта не задана ссылка на экземпляр объекта» для объекта листа. (Я использовал эти Microsoft.Office.Interop.Excel, Microsoft.Office. ядро;) Im новой для C#, может кто-нибудь помочь мне с этим, спасибо

ответ

0
sheet = (Excel.Worksheet)xl_workbook.Worksheets.get_Item(1); 
0

Если вы хотите использовать имя листа вместо индекса и использовать Linq следующим образом:

var xlSheet = xl_workbook.Cast<_Worksheet>().FirstOrDefault(x => x.Name == "Sheet1") 

, если лист не найден переменная xlsheet будет нулевым

0

Это, как я хотел бы сделать это:

private void button1_Click(object sender, EventArgs e) 
{ 
    Excel.Application xlApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 
    Excel.Workbook xlWorkbook = xlApp.ActiveWorkbook; 
    Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1]; 
    xlWorksheet.Cells[1,1] = "Name"; 
} 

Я тестировал его с Visual C# 2010 Express и открытой книги Excel и она работает для меня ,

0

Никто не ответил так правильный ответ, я проверил это, и она работала:

Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet); 
Excel.Range firstRow = activeWorksheet.get_Range("A1"); 
firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown); 
Excel.Range newFirstRow = activeWorksheet.get_Range("A1"); 
newFirstRow.Value2 = "This text was added by using code"; 
0
Excel.Application xlAppToExport = new Excel.Application(); 
xlAppToExport.Workbooks.Add(""); 

Excel.Worksheet xlWorkSheetToExport; 

xlWorkSheetToExport =(Excel.Worksheet)xlAppToExport.Application.Worksheets.Add(); 
xlWorkSheetToExport.Name = "customer"; 
Смежные вопросы