2012-12-07 14 views
5

sto cercando di leggere i commenti dal foglio excel ma non riesco a farlo. Per favore aiuto. Grazie in anticipo. Il mio codice è i seguenti-come leggere i commenti del foglio Excel in 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

A prima vista, direi 0 non è un intervallo valido. Non dovrebbe essere un intervallo valido in un foglio Excel, come ad es. A6? –

+0

ok ... certo ... ma ancora non riesco a memorizzare quel commento in nessuna variabile. Mi dà errore – Priyanka

risposta

6

Fondamentalmente avuto, ma come ha detto Wimbo, 0 non è un intervallo valido.

Quando si interpone con Office da .Net, gli array iniziano sempre da uno. Un intervallo è una matrice 2D, quindi una volta che hai un intervallo, la cella in alto a sinistra in tale intervallo si accede in questo modo:

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

Per accedere alla cella sotto quella in alto a sinistra, si esegue questa operazione:

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

per accedere alla cella di uno a destra della cella in alto a sinistra, si esegue questa operazione:

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

Se si sta lavorando in .Net 4 o superiore, non è necessario specificare l'opzione parametri (in altre parole è possibile eliminare tutto il Missing.Value 's). Sto indovinando che si desidera ottenere il commento nella cella A1 sul foglio 1 in una cartella di lavoro, vorrei farlo in questo modo:

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

Grazie mille ..... Ha funzionato !!!!! Grazie mille ancora !!!!! – Priyanka

Problemi correlati