Запись в следующую строку в Excel 2007 - PullRequest
0 голосов
/ 12 июня 2011

В настоящее время у меня есть следующий метод, который пишет в Excel 2007.

public static void createSpreadsheet(String msg)
    {
        Excel.Application oXL;
        Excel.Workbook oWB;
        Excel.Worksheet oSheet;
        Excel.Range oRng;
        oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        oWB = oXL.Workbooks.get_Item(1);
        oSheet = (Excel.Worksheet)oWB.ActiveSheet;

        oXL.Visible = true;
        oXL.UserControl = false;
        oRng = oSheet.get_Range("A1", "A" + 1);
        oRng.Value2 = msg;

    }

Тем не менее, независимо от того, что я отправил, все будет записано только в столбец А1, что видно из приведенного выше кода.

Как расширить приведенный выше код, чтобы при отправке дополнительных сообщений они добавлялись ниже ранее написанного столбца. ?? В консольном приложении я мог бы сделать это: Console.writeline (msg). Как мне добиться этого в Excel?

Например: Msg 1 (Col A1) Msg 2 (Col A2) Msg 3 (Col A3) ....

Ответы [ 2 ]

0 голосов
/ 12 июня 2011

В настоящее время вы получаете только ячейку А1.Если вы хотите записать в другую строку, просто измените параметры на свой диапазон.Например:

oRng = oSheet.Range["A" + rowNumber, "A" + rowNumber];
oRng.Value = msg;

И теперь вы можете динамически увеличивать rowNumber после каждого сообщения.То же самое работает для столбцов, просто замените «A» на соответствующий столбец.

0 голосов
/ 12 июня 2011

Определите переменную с именем currentColumn и передайте ее методу:

public static void createSpreadsheet(String msg, column)

При вызове:

// there is an integer variable called currentColumn
createSpreadsheet("a message", currentColumn++)
...