Как можно пропустить процесс сохранения после импорта Excel в datagridview? - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь импортировать файл Excel с несколькими листами, у меня есть код для выбора конкретного листа.После успешного импорта выбранного листа появится диалоговое окно сохранения, как показано ниже.Итак, как можно пропустить процесс сохранения?

Код для выбора файла

    void ChooseFile()
    {
        OFD1.Title = "Get Excel File";
        OFD1.FileName = "";
        OFD1.Filter = "Excel File|*.xlsx;*.xls";

        if(OFD1.ShowDialog() == DialogResult.OK)
        {
            FileName = OFD1.FileName;
            app = new Excel.Application();
            workbook = app.Workbooks.Open(FileName);
            if(FileName.Trim() != "")
                if(workbook.Sheets.Count == 1)
                    ExcelToGrid();
                else
                    ChooseSheet();
        }
    }

Код для выбора листа

    public void ChooseSheet()
    {
        for(int SheetNo = 1; SheetNo <= workbook.Sheets.Count; SheetNo++)
            cboSheet.Items.Add("Sheet" + SheetNo);
    }

Код для импорта в Excel

    public void ExcelToGrid(string SheetNo)
    {
        app = new Excel.Application();
        workbook = app.Workbooks.Open(FileName);
        worksheet = workbook.Worksheets[SheetNo];


        dgvAddByGroup.Rows.Clear();
        dgvAddByGroup.Columns.Clear();
        dgvAddByGroup.Columns.Add("dgvSelect", "Select");

        int RowNo, ColNo, RowCounter = 0, ColCounter = 0, CellCounter = 0;

        for(ColNo = 1; ColNo <= worksheet.Columns.Count; ColNo++)
            if(!string.IsNullOrEmpty(Convert.ToString(worksheet.Cells["1", ColNo].value)))
            {
                dgvAddByGroup.Columns.Add("dgv" + Convert.ToString(worksheet.Cells["1", ColNo].value), Convert.ToString(worksheet.Cells["1", ColNo].value));
                ColCounter = 0;
            }
            else
                if(ColCounter == 0)
                {
                    dgvAddByGroup.Columns.Add("", "");
                    ColCounter = 1;
                }
                else if(ColCounter == 1)
                {
                    dgvAddByGroup.Columns.RemoveAt(ColNo - 2);
                    ColCounter = 0;
                    break;
                }

        for(RowNo = 1; RowNo <= worksheet.Rows.Count; RowNo++)
        {
            CellCounter = 0;
            dgvAddByGroup.Rows.Add();
            dgvAddByGroup.Rows[RowNo - 1].Cells[0].Value = false;
            for(ColNo = 1; ColNo <= dgvAddByGroup.Columns.Count; ColNo++)
            {
                if(!string.IsNullOrEmpty(Convert.ToString(worksheet.Cells[RowNo, ColNo].value)))
                {
                    dgvAddByGroup.Rows[RowNo - 1].Cells[ColNo - 1].Value = Convert.ToString(worksheet.Cells[RowNo, ColNo].value);
                    CellCounter += 1;
                }
                else if(string.IsNullOrEmpty(Convert.ToString(worksheet.Cells[RowNo, ColNo].value)))
                    CellCounter += 0;
            }
            if(CellCounter == 0)
            {
                if(RowCounter == 0)
                    RowCounter = 1;
                else if(RowCounter == 1)
                {
                    dgvAddByGroup.Rows.RemoveAt(RowNo - 1);
                    dgvAddByGroup.Rows.RemoveAt(RowNo - 2);
                    RowCounter = 0;
                    break;
                }
            }
            else
            {
                RowCounter = 0;
            }
        }
        workbook.Close();
        app.Quit();
    }

Изображение Excel:

Image for Excel

Изображение результата:

Image for the result I get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...