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;
}