通过单独的类更改单元格的值

时间:2013-05-24 17:57:19

标签: c# excel

我有一个包含多个工作表的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”关键字不起作用。

2 个答案:

答案 0 :(得分:0)

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

所以:

((Range)objLockSheet.Cells[18, 6]).Value = transaction;
((Range)objLockSheet.Cells[20, 6]).Value = occ;

答案 1 :(得分:0)

我找到了一种解决方法。不干净,但它的工作原理。我必须将工作表声明为开始工作表的基础类中的对象,然后将其传递给此类。试图在外部类中声明工作表根本不起作用。