20230509001 - DataTable 导出成Excel


        private void Btn_Export_Click(object sender, EventArgs e)
        {
            if (dt == null)
            {
                MessageBox.Show(" 数据为空,不能导出,  "
                                           + "\r\n 导出已经终止。", "提示:导出失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (dt.Rows.Count > 0)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.CreatePrompt = true;
                saveFileDialog.Title = "保存为Excel文件";
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    //DataTable dt_e = dt.Copy();
                    DataTable dt_e = GetDgvToTable(dgv_M);

                    // 写入Excel表
                    string columnTitle = "";
                    Stream stream = saveFileDialog.OpenFile();
                    StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.GetEncoding(-0));

                    for (int i = 0; i < dt_e.Columns.Count; i++)
                    {
                        if (i > 0)
                        {
                            columnTitle += "\t";//或者为逗号
                        }

                        columnTitle += dt_e.Columns[i].Caption.ToString();//写入列标题
                        //columnTitle += dt_e.Columns[i].HeaderText;//写入列标题
                        //if (i < 22)
                        //{
                        //    columnTitle += dt_e.Columns[i].Caption.ToString();//写入列标题
                        //}
                    }
                    sw.WriteLine(columnTitle);
                    for (int j = 0; j < dt_e.Rows.Count; j++)
                    {
                        string columnValue = "";
                        for (int k = 0; k < dt_e.Columns.Count; k++)
                        {
                            if (k > 0)
                            {
                                columnValue += "\t";
                            }
                            //columnValue += dt_e.Rows[j].Cells[k].Value.ToString();
                            columnValue += dt_e.Rows[j][k].ToString();
                        }
                        sw.WriteLine(columnValue);
                    }
                    sw.Close();
                    stream.Close();
                }

                MessageBox.Show(" Excel表导出完成,"
                            + "\r\n 您可以选择您刚才导出的文件打开导出内容。", "提示:导出成功", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }
            else
            {
                MessageBox.Show(" 导出的数据为空,不能导成Excel表,  "
                                            + "\r\n 导出已经终止。", "提示:导出失败", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        protected DataTable GetDgvToTable(DataGridView dgv)
        {
            DataTable dt = new DataTable();
            for (int count = 0; count < dgv.Columns.Count; count++)
            {
                DataColumn dc = new DataColumn(dgv.Columns[count].Name.ToString());
                dt.Columns.Add(dc);
            }
            for (int count = 0; count < dgv.Rows.Count; count++)
            {
                DataRow dr = dt.NewRow();
                for (int countsub = 0; countsub < dgv.Columns.Count; countsub++)
                {
                    dr[countsub] = Convert.ToString(dgv.Rows[count].Cells[countsub].Value);
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }

posted @ 2023-05-09 16:51  追逐苦痛  阅读(19)  评论(0编辑  收藏  举报