DataGirdView中的数据导出到Excel,其中调用了上次转化成DataTable的方法,用的是网上导出到Execl的方法,但同时增加了对数字与时间字段的判断
public void ExportTOExcel(DataGridView dView)
{
/*用的三层结构,调用了一个类*/
using (BLLConnect a = new BLLConnect())
{
DataTable myDt = GetDgvToTable(dView);
SaveFileDialog saveFileDialog = new SaveFileDialog();
if (myDt.Rows.Count == 0)
{
MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
saveFileDialog.Filter = "Execl文件|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.Title = "导出文件保存路径";
saveFileDialog.FileName = null;
saveFileDialog.ShowDialog();
string FileName = saveFileDialog.FileName;
if (FileName.Length != 0)
{
DataTable dt = myDt;
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine = "";
objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
for (int i = 0; i < dt.Columns.Count; i++)
{
strLine = strLine + dt.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j == 0 || j == 7 || j == 15 || j == 17) /*数字*/
{
strLine = strLine + "@" + Convert.ToString(dt.Rows[i][j]) + Convert.ToChar(9);
}
else if (j == 10 || j == 13) /*时间*/
{
strLine = strLine + string.Format("{0:d}", Convert.ToDateTime(dt.Rows[i][j])) + Convert.ToChar(9);
}
else
{
strLine = strLine + Convert.ToString(dt.Rows[i][j]) + Convert.ToChar(9);
}
}
objStreamWriter.WriteLine(strLine);
strLine = "";
}
objStreamWriter.Close();
objFileStream.Close();
MessageBox.Show("数据导出成功","提示");
}
}
}
}