• CSVHelper 导出CSV 格式


    public class CSVHelper
        {
            System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存
            private string header = string.Empty;//标题
    
            /// <summary>
            /// 初始化打印设置
            /// </summary>
            /// <param name="printID"></param>
            protected void InitExportController(Dictionary<string, object> addition)
            {
                saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
    
                saveFileDialog1.Filter = "导出CSV (*.csv)|*.csv";
                saveFileDialog1.FilterIndex = 1;
                saveFileDialog1.RestoreDirectory = true;
                saveFileDialog1.CreatePrompt = false;
                saveFileDialog1.Title = "导出文件保存路径";
                saveFileDialog1.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 
    
                header = addition["HeardTitle"].ToString();
                saveFileDialog1.FileName = header;
            }
    
            /// <summary>
            /// 导出
            /// </summary>
            /// <param name="dt">表格</param>
            /// <param name="strFileName">路径</param>
            public bool Export(Dictionary<string, object> addition, System.Data.DataTable dt)
            {
                if (!object.Equals(dt, null))
                {
                    InitExportController(addition);
                    try
                    {
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            string filename = saveFileDialog1.FileName;
                            return ExportToSvc(addition, dt, filename);
                        }
                    }
                    catch
                    {
                        saveFileDialog1.FileName = "请输入文件名称";
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            string filename = saveFileDialog1.FileName;
                            return ExportToSvc(addition, dt, filename);
                        }
                    }
                }
    
                return false;
            }
    
            /// <summary>
            /// 导出
            /// </summary>
            /// <param name="gv">内容</param>
            /// <param name="strFileName">路径</param>
            public bool Export(Dictionary<string, object> addition, DataGridView gv)
            {
                if (gv.Rows.Count > 0)
                {
                    InitExportController(addition);
    
                    try
                    {
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            string filename = saveFileDialog1.FileName;
                            return ExportToSvc(addition, gv, filename);
                        }
                    }
                    catch
                    {
                        saveFileDialog1.FileName = "请输入文件名称";
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            string filename = saveFileDialog1.FileName;
                            return ExportToSvc(addition, gv, filename);
                        }
                    }
                }
                return false;
            }
    
    
            /// <summary>
            /// 导出为svc文件,strFileName为要导出的csv格式文件的路径和文件名
            /// </summary>
            /// <param name="addition">头部信息</param>
            /// <param name="dt">表格</param>
            /// <param name="strFileName">路径</param>
            protected bool ExportToSvc(Dictionary<string, object> addition, System.Data.DataTable dt, string strFileName)
            {
                string strPath = strFileName;
                if (File.Exists(strPath))
                {
                    File.Delete(strPath);
                }
    
                //先打印标头
                StringBuilder strColu = new StringBuilder();
                StringBuilder strValue = new StringBuilder();
                int i = 0;
                try
                {
                    StreamWriter sw = new StreamWriter(new FileStream(strPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312"));
                    if (addition.ContainsKey("HeardTitle"))
                    {
                        sw.WriteLine(addition["HeardTitle"].ToString());
                    }
    
                    if (addition.ContainsKey("Content"))
                    {
                        sw.WriteLine(addition["Content"].ToString());
                        sw.WriteLine();
                    }
    
    
                    for (i = 0; i <= dt.Columns.Count - 1; i++)
                    {
                        if (addition.ContainsKey(dt.Columns[i].ColumnName))
                        {
                            strColu.Append(addition[dt.Columns[i].ColumnName].ToString().Trim());
                        }
                        else
                        {
                            strColu.Append(dt.Columns[i].ColumnName);
                        }
                        strColu.Append(",");
                    }
                    strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符
    
                    sw.WriteLine(strColu);
    
                    foreach (DataRow dr in dt.Rows)
                    {
                        strValue.Remove(0, strValue.Length);//移出
    
                        for (i = 0; i <= dt.Columns.Count - 1; i++)
                        {
                            strValue.Append(dr[i].ToString());
                            strValue.Append(",");
                        }
                        strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符
                        sw.WriteLine(strValue);
                    }
                    if (addition.ContainsKey("Foot"))
                    {
                        sw.WriteLine();
                        sw.WriteLine(addition["Foot"].ToString());
                    }
                    sw.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
    
            /// <summary>
            /// 导出为svc文件,strFileName为要导出的csv格式文件的路径和文件名
            /// </summary>
            ///  <param name="addition">头部信息</param>
            /// <param name="gv">DataGridView控件</param>
            /// <param name="strFileName"></param>
            protected bool ExportToSvc(Dictionary<string, object> addition, DataGridView gv, string strFileName)
            {
                string strPath = strFileName;
                if (File.Exists(strPath))
                {
                    File.Delete(strPath);
                }
    
                //先打印标头
                StringBuilder strColu = new StringBuilder();
                StringBuilder strValue = new StringBuilder();
                int i = 0;
                try
                {
                    StreamWriter sw = new StreamWriter(new FileStream(strPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312"));
    
                    if (addition.ContainsKey("HeardTitle"))
                    {
                        sw.WriteLine(addition["HeardTitle"].ToString());
                    }
    
                    if (addition.ContainsKey("Content"))
                    {
                        sw.WriteLine(addition["Content"].ToString());
                        sw.WriteLine();
                    }
    
                    for (i = 0; i <= gv.Columns.Count - 1; i++)
                    {
                        if (gv.Columns[i].Visible == true)
                        {//可见的列导出,隐藏的列过滤
                            strColu.Append(gv.Columns[i].HeaderText.Trim());
                            strColu.Append(",");
                        }
                    }
                    strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符
                    sw.WriteLine(strColu);
    
                    foreach (DataGridViewRow dr in gv.Rows)
                    {
                        strValue.Remove(0, strValue.Length);//移出
    
                        for (i = 0; i <= gv.Columns.Count - 1; i++)
                        {
                            if (gv.Columns[i].Visible == true)
                            {//可见的导出
                                strValue.Append(dr.Cells[i].Value.ToString());
                                strValue.Append(",");
                            }
                        }
                        strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符
                        sw.WriteLine(strValue);
                    }
    
                    if (addition.ContainsKey("Foot"))
                    {
                        sw.WriteLine();
                        sw.WriteLine(addition["Foot"].ToString());
                    }
    
                    sw.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            /// <summary>
            /// 导出CSV
            /// </summary>
            /// <param name="title">显示标题</param>
            /// <param name="name">文件名</param>
            /// <param name="dts">一至多个表源</param>
            /// <returns></returns>
            public bool Export(string title, string name, params DataTable[] dts)
            {
                bool result = false;
                if (dts != null && dts.Length > 0)
                {
                    var dict = new Dictionary<string, object>();
                    dict["HeardTitle"] = name;
                    InitExportController(dict);
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        try
                        {
                            using (StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.CreateNew), Encoding.GetEncoding("GB2312")))
                            {
                                sw.WriteLine(title);
                                foreach (DataTable dt in dts)
                                {
                                    StringBuilder strValue = new StringBuilder();
                                    StringBuilder strColu = new StringBuilder();
                                    for (int i = 0; i <= dt.Columns.Count - 1; i++)
                                    {
                                        strColu.Append(dt.Columns[i].ColumnName);
                                        strColu.Append(",");
                                    }
                                    strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符
    
                                    sw.WriteLine(strColu);
    
                                    foreach (DataRow dr in dt.Rows)
                                    {
                                        strValue.Remove(0, strValue.Length);//移出
    
                                        for (int i = 0; i <= dt.Columns.Count - 1; i++)
                                        {
                                            strValue.Append(dr[i].ToString());
                                            strValue.Append(",");
                                        }
                                        strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符
                                        sw.WriteLine(strValue);
                                    }
                                    sw.WriteLine();
                                }
                            }
                            result = true;
                        }
                        catch (Exception exc)
                        {
                            Console.WriteLine(exc.Message);
                        }
                    }
                }
                return result;
            }
            /// <summary>
            /// 导出CSV
            /// </summary>
            /// <param name="title">显示标题</param>
            /// <param name="name">文件名</param>
            /// <param name="dts">一至多个表源</param>
            /// <returns></returns>
            public bool Export(string title, string name, DataSet ds)
            {
                bool result = false;
                if (ds != null && ds.Tables.Count > 0)
                {
                    var dict = new Dictionary<string, object>();
                    dict["HeardTitle"] = name;
                    InitExportController(dict);
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        try
                        {
                            using (StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.CreateNew), Encoding.GetEncoding("GB2312")))
                            {
                                sw.WriteLine(title);
                                foreach (DataTable dt in ds.Tables)
                                {
                                    StringBuilder strValue = new StringBuilder();
                                    StringBuilder strColu = new StringBuilder();
                                    for (int i = 0; i <= dt.Columns.Count - 1; i++)
                                    {
                                        strColu.Append(dt.Columns[i].ColumnName);
                                        strColu.Append(",");
                                    }
                                    strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符
    
                                    sw.WriteLine(strColu);
    
                                    foreach (DataRow dr in dt.Rows)
                                    {
                                        strValue.Remove(0, strValue.Length);//移出
    
                                        for (int i = 0; i <= dt.Columns.Count - 1; i++)
                                        {
                                            strValue.Append(dr[i].ToString());
                                            strValue.Append(",");
                                        }
                                        strValue.Remove(strValue.Length - 1, 1);//移出掉最后一个,字符
                                        sw.WriteLine(strValue);
                                    }
                                    sw.WriteLine();
                                }
                            }
                            result = true;
                        }
                        catch (Exception exc)
                        {
                            Console.WriteLine(exc.Message);
                        }
                    }
                }
                return result;
            }
        }
  • 相关阅读:
    Java -verbose:gc 命令
    JVM中启用逃逸分析
    nginx指定配制文件
    jvm笔记
    python添加tab键提示
    ssh-copy-id帮你建立信任
    救火必备linux命令
    oracle判断字符串中包函另外一个字符串
    String,StringBuffer,StringBuilder三者区别
    Python数据分析应用背景
  • 原文地址:https://www.cnblogs.com/dragon-L/p/3777215.html
Copyright © 2020-2023  润新知