Лист Excel, добавление номера C # - PullRequest
1 голос
/ 14 сентября 2011

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда выбирается число из поля со списком, он создает новый лист. Я просто хочу, чтобы переменная была добавлена ​​только к активному листу, а не создавала лист каждый раз. Любая помощь с благодарностью.

Хотелось бы что-нибудь подобное?

        var xl = new Excel.Application();
        xl.Visible = true;
        var wb = (Excel._Workbook)xl.ActiveWorkbook; //(xl.Workbooks.Add(Missing.Value));
        var sheet = (Excel._Worksheet)wb.ActiveSheet;

        //Generate Linear Guide Support in Solidworks
        if (comboBox1.Text == "0")
        {
            sheet.Cells[6, 4] = "0"; //Cell Location[y-axis, x-axis]
        }
         if (comboBox2.Text == "AH")
        {
            sheet.Cells[6, 5] = "AH";
        }
        if(comboBox3.Text == "2")
        {
            sheet.Cells[6, 6] = "2";
        }        

1 Ответ

2 голосов
/ 14 сентября 2011

Вычеркните этот код и не вызывайте его для каждого выбора.Вы можете переместить это так, чтобы оно выполнялось только один раз.

    // Available at the class level. single instance - Singleton pattern may be employed
    // Check the correct datatype for ExcelSheet
    ExcelSheet sheet;
    void UpdateExcelSheet(int row, int col, string value)
    {
        if (sheet == null)
        {
            var xl = new Excel.Application();
            xl.Visible = true;
            var wb = (Excel._Workbook)(xl.Workbooks.Add(Missing.Value));
            sheet = (Excel._Worksheet)wb.ActiveSheet;
        }
        sheet.Cells[row, col] = value;
    }

    void OnComboSelection()
    {
        int row, col;
        string value;
        if(comboBox5.Text == "1")
        {
            row = 6; col = 6; value = "1";
        }
        if (comboBox3.Text == "2")
        {
            row = 6; col = 8; value = "2";
        }
        UpdateExcelSheet(row, col, value);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...