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

我找到了一个解决方法。不干净,但它有效。我必须将工作表声明为打开工作表的基础类中的对象,然后将其传递给此类。试图在外部类中声明工作表根本行不通。

于 2013-07-12T14:40:32.113 回答
0

好吧,通常你应该使用Value单元格的属性来输入文本。(或Value2Text)。

所以:

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