2012-12-07 29 views
5

我想读取Excel表格中的注释,但无法做到这一点。请帮忙。提前致谢。我的代码如下 -如何阅读Excel中的Excel表单的评论#

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

乍一看,我会说0不是有效范围。这不应该是Excel工作表中的有效范围,例如A6? –

+0

好吧......当然......但我仍然无法将该评论存储在任何变量中。它给我错误 – Priyanka

回答

6

你基本上有过它,但正如Wimbo所说,0不是有效范围。

从.Net与Office进行互动时,数组总是从一开始。范围是一个二维数组,所以一旦你有一个范围,在该范围内的左上角单元格,像这样访问:

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

要访问以下左上角一个单元格,你可以这样做:

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

接入小区一到左上角的单元格的权利,你这样做:

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

如果你是在.NET 4.0以上工作,你不需要指定可选参数(换句话说,你可以放弃所有的Missing.Value's)。我猜你想在工作簿中得到Sheet 1单元格A1中的注释,我会这样做:

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

非常感谢.....它工作!!!!!再次感谢!!!!! – Priyanka