Как отобразить программно созданный набор данных для динамически создаваемого datagridView? - PullRequest
0 голосов
/ 14 января 2019

Я хочу экспортировать таблицу данных, чтобы превзойти выбранный столбец. Этот код просто дает пустой .xlsx файл Excel. Но я хочу, чтобы он заполнялся значениями «рутинной_данных_сети» с выбранным столбцом. Я действительно застрял с этой проблемой. Как решить эту проблему? любая помощь очень ценится.

try
        {
            MySqlDataAdapter dp = new MySqlDataAdapter();
            DataTable d = new DataTable();
            d.Columns.Add("Days");
            d.Columns.Add("Groups");
            d.Columns.Add("Room no");                        

            foreach (DataGridViewRow row in routine_data_grid.Rows)
            {
                int i = row.Index;

                DataRow dro = d.NewRow();
                dro["Days"] = routine_data_grid.Rows[i].Cells[1].Value.ToString();
                dro["Groups"] = routine_data_grid.Rows[i].Cells[2].Value.ToString();
                dro["Room no"] = routine_data_grid.Rows[i].Cells[3].Value.ToString();

            }

            DataGridView gv = new DataGridView();


            gv.DataSource = d;


            Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            worksheet = workbook.Sheets["Sheet1"];
            worksheet = workbook.ActiveSheet;
            worksheet.Name = "Routine";
            for (int i = 1; i < gv.Columns.Count+1; i++)
            {
                worksheet.Cells[1, i] = gv.Columns[i - 1].HeaderText;
            }
            for (int i = 0; i < gv.Rows.Count; i++)
            {
                for (int j = 0; j < gv.Columns.Count; j++)
                {


                        worksheet.Cells[i + 2, j + 1] = gv.Rows[i].Cells[j].Value.ToString();



                }
            }
            var saveFileDialoge = new SaveFileDialog();
            saveFileDialoge.FileName = "New Routine";
            saveFileDialoge.DefaultExt = ".xlsx";
            if (saveFileDialoge.ShowDialog() == DialogResult.OK)
            {
                workbook.SaveAs(saveFileDialoge.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            }
            app.Quit();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

1 Ответ

0 голосов
/ 14 января 2019

Я уже нашел это. Я просто использую другой DataGridView для другого Datatable, который я оставляю невидимым. Вот как я решаю свою проблему.

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