0

複数のシートを含む Excel ワークブックと、各シートのセルに入力される内容を制御する C# クラスがあります。ただし、セルを正しく設定する方法を一生理解することはできません。

クラスには、BuildSheetというシートを参照しようとするという関数がありますRate_Lock

これが私のコードです:

public static void BuildSheet(Excel._Worksheet sheet, string transaction, string occ)
{
    Excel.Application objAppl;
    Excel._Workbook objWorkbook;
    Excel._Worksheet objLockSheet;

    try
    {
        objAppl = System.Runtime.InteropServices.Marshal.GetActiveObject(
            "Excel.Application") as Excel.Application;
    }
    catch (System.Runtime.InteropServices.COMException)
    {
        objAppl = new Excel.Application();
    }

    objWorkbook = (Excel._Workbook)objAppl.ActiveWorkbook;
    objLockSheet = (Excel.Worksheet)objAppl.Worksheets["Rate_Lock"];

    objLockSheet.Cells[18, 6] = transaction;
    objLockSheet.Cells[20, 6] = occ;
}

シートを間違って参照しようとしているのだろうか。これについて本当に奇妙なのは、デバッグ中にセルが読み込まれないことです。ただし、デバッグを停止すると、セルは Visual Studio に取り込まれます。

私が間違っていることはありますか?

編集:エラーが発生していないことにも言及する必要があります。また、次を使用して、特定のシートの背後にあるコードでこのコードが機能するようにしました。

objSheet = (Excel._Worksheet)this.Application.Worksheets["Rate_Lock"];

別のシートを参照しようとすると、「this」キーワードは機能しません。

4

2 に答える 2

0

まあ、通常Valueはセルのプロパティを使ってテキストを入力するべきです。(またはValue2またはText)。

そう:

((Range)objLockSheet.Cells[18, 6]).Value = transaction;
((Range)objLockSheet.Cells[20, 6]).Value = occ;
于 2013-05-24T18:03:44.093 に答える
0

回避策を見つけました。きれいではありませんが、機能します。最初のシートの基になるクラスでシートをオブジェクトとして宣言し、それをこのクラスに渡す必要がありました。外部クラスでシートを宣言しようとしてもうまくいきません。

于 2013-07-12T14:40:32.113 に答える