• c#将DataTable内容导出为CSV文件


    写了个类:

     class DataTableAndCSV
        {
            public static DataTable csvToDataTable(string file)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;'"; // Excel file  
                if (file.EndsWith(".csv"))
                    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='TEXT;HDR=Yes;FMT=Delimited;'"; // csv file:HDR=Yes-- first line is header  
                //strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='TEXT;HDR=Yes;FMT=Delimited;'"; // csv file:HDR=Yes-- first line is header  
                OleDbConnection oleConn = new OleDbConnection(strConn);
                oleConn.Open();
                DataTable sheets = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                if (sheets == null || sheets.Rows.Count < 1)
                {
                    return null;
                }
                String fileName = sheets.Rows[0]["TABLE_NAME"].ToString(); // sheets.Rows[0] -- first sheet of excel  
                if (file.EndsWith(".csv"))
                    fileName = file.Substring(file.LastIndexOf("/"));
                string olestr = "select * from [" + fileName + "]";
                if (file.EndsWith(".csv"))
                    olestr = "select * from [" + fileName + "]";
                OleDbCommand oleComm = new OleDbCommand(olestr, oleConn);
                oleComm.Connection = oleConn;
                OleDbDataAdapter oleDa = new OleDbDataAdapter();
                oleDa.SelectCommand = oleComm;
                DataSet ds = new DataSet();
                oleDa.Fill(ds);
                oleConn.Close();
                return ds.Tables[0];
            }
    
            public static void dataTableToCsv(DataTable table, string file)
            {
                FileInfo fi = new FileInfo(file);
                string path = fi.DirectoryName;
                string name = fi.Name;
                ///:*?"<>|
                //把文件名和路径分别取出来处理
                name = name.Replace(@"", "");
                name = name.Replace(@"/", "");
                name = name.Replace(@":", "");
                name = name.Replace(@"*", "");
                name = name.Replace(@"?", "");
                name = name.Replace(@"<", "");
                name = name.Replace(@">", "");
                name = name.Replace(@"|", "");
                string title = "";
    
                FileStream fs = new FileStream(path + "\" + name, FileMode.Create);
                StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);
    
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    title += table.Columns[i].ColumnName + ",";
                }
                title = title.Substring(0, title.Length - 1) + "
    ";
                sw.Write(title);
    
                foreach (DataRow row in table.Rows)
                {
                    if (row.RowState == DataRowState.Deleted) continue;
                    string line = "";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        line += row[i].ToString().Replace(",", "") + ",";
                    }
                    line = line.Substring(0, line.Length - 1) + "
    ";
    
                    sw.Write(line);
                }
    
                sw.Close();
                fs.Close();
            }
    
            public static void dataTableToCsv(DataTable table, string file, string Title)
            {
                FileInfo fi = new FileInfo(file);
                string path = fi.DirectoryName;
                string name = fi.Name;
                ///:*?"<>|
                //把文件名和路径分别取出来处理
                name = name.Replace(@"", "");
                name = name.Replace(@"/", "");
                name = name.Replace(@":", "");
                name = name.Replace(@"*", "");
                name = name.Replace(@"?", "");
                name = name.Replace(@"<", "");
                name = name.Replace(@">", "");
                name = name.Replace(@"|", "");
                string title = "";
    
                FileStream fs = new FileStream(path + "\" + name, FileMode.Create);
                StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);
    
                title += Title + ",";
                for (int i = 1; i < table.Columns.Count; i++)
                {
                    title += ",";
                }
                title = title.Substring(0, title.Length - 1) + "
    ";
                sw.Write(title);
                title = "";
    
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    title += table.Columns[i].ColumnName + ",";
                }
                title = title.Substring(0, title.Length - 1) + "
    ";
                sw.Write(title);
    
                foreach (DataRow row in table.Rows)
                {
                    if (row.RowState == DataRowState.Deleted) continue;
                    string line = "";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        line += row[i].ToString().Replace(",", "") + ",";
                    }
                    line = line.Substring(0, line.Length - 1) + "
    ";
    
                    sw.Write(line);
                }
    
                sw.Close();
                fs.Close();
            }
    
            //public static void ExportToSvc(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"));
            //        for (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 (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.Close();
            //    }
            //    catch (Exception ex)
            //    {
            //        throw ex;
            //    }
            //    ////System.Diagnostics.Process.Start(strPath);
            //}
        }
  • 相关阅读:
    pyqt5 树节点点击实现多窗口切换
    pyglet self.
    itchat key
    python队列Queue
    Python建立多线程任务并获取每个线程返回值
    利用Python实现多线程聊天功能
    Python3.5+PyQt5多线程+itchat实现微信防撤回桌面版代码
    pyglet player sound
    文件打开的几种访问模式
    pyglet StaticSource
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/6951982.html
走看看 - 开发者的网上家园