2012-12-07 18 views
5

Próbuję przeczytać komentarze z arkusza programu Excel, ale nie można tego zrobić. Proszę pomóż. Z góry dziękuję. mój kod jest następujący:jak odczytać komentarze arkusza programu excel w C#

Excel.Application appExl; 
    Excel.Workbook workbook; 
    Excel.Worksheet NwSheet; 
    Excel.Range ShtRange; 
    appExl = new Excel.Application(); 
    workbook = appExl.Workbooks.Open(Server.MapPath("~/" + System.Configuration.ConfigurationManager.AppSettings["ExcelFile"] + fileName), Missing.Value, Missing.Value, 
    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
    NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1); 
    string obj = NwSheet.Range[0].Comment.Text;  
+0

Na pierwszy rzut oka powiedziałbym, że 0 nie jest prawidłowym zakresem. Nie powinien to być prawidłowy zakres w arkuszu Excel, np. A6? –

+0

ok ... jasne ... ale nadal nie mogę zapisać tego komentarza w żadnej zmiennej. Daje mi błąd – Priyanka

Odpowiedz

6

W zasadzie to miałeś, ale jak powiedział Wimbo, 0 nie jest prawidłowym zakresem.

Podczas interakcji z Office z domeny .Net, tablice zawsze zaczynają się od jednego. Zakres jest 2D array, więc skoro masz zasięg, lewa górna komórka tego zakresu jest dostępne tak:

using Excel = Microsoft.office.Interop.Excel; 
Excel.Range range = worksheet.Cells[1,1]; 

Aby uzyskać dostęp do komórki poniżej górnego lewego jedną, byłoby to zrobić:

Excel.Range range = worksheet.Cells[2,1]; //It goes row, then column 

aby uzyskać dostęp do jednej komórki na prawo od lewego górnego ogniwa, to zrobić:

Excel.Range range = worksheet.Cells[1,2]; 

Jeśli pracujesz w .NET 4 lub powyżej, nie trzeba określić opcjonalny parametry (w innych słowach można upuścić wszystkie z Brakujące. Wartość). Zgaduję, że chcesz uzyskać komentarz w komórce A1 na arkuszu 1 w skoroszycie, zrobiłbym to tak:

using System.Runtime.InteropServices; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace ExcelComments 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var application = new Excel.Application(); 
      var workbook = application.Workbooks.Open(@"C:\Yada yada\workbook with comments.xlsx"); 
      Excel.Worksheet worksheet = workbook.Sheets[1]; 

      Excel.Range range = worksheet.Cells[1, 1]; 

      //Here is your comment as a string 
      var myComment = range.Comment.Text(); 

      workbook.Close(false); 
      application.Quit(); 

      Marshal.ReleaseComObject(application); 
     } 
    } 
} 
+0

Wielkie dzięki ..... zadziałało !!!!! Jeszcze raz dziękuję !!!!! – Priyanka