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("数据导出成功","提示");
                    }
                }
            }
        }

posted @ 2018-03-22 14:47  微笑!  阅读(129)  评论(0编辑  收藏  举报