5

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;    
4

1 に答える 1

6

あなたは基本的にそれを持っていましたが、ウィンボが言ったように、0 は有効な範囲ではありません.

.Net から Office と相互運用する場合、配列は常に 1 から始まります。範囲は 2D 配列であるため、範囲を取得したら、その範囲の左上のセルに次のようにアクセスします。

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

左上のセルの 1 つ右のセルにアクセスするには、次のようにします。

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

.Net 4 以降で作業している場合は、オプションのパラメーターを指定する必要はありません (つまり、すべてのMissing.Valueを削除できます)。ワークブックのシート 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);
        }
    }
}
于 2012-12-07T11:24:58.130 に答える