中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C#導(dǎo)出數(shù)據(jù)到CVS文件的通用類代碼

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

C#導(dǎo)出數(shù)據(jù)到CVS文件的通用類代碼,通過這個(gè)類可以很簡(jiǎn)單的定義數(shù)據(jù)格式,并導(dǎo)出到CVS文件

//這里寫了一個(gè)通用的類
 
  
 
using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Reflection;
using System.IO;
using System.Data.Odbc;
 
namespace Com.DRPENG.SDXY.UI.Common
{
    public class CSVHelper
    {
        #region Fields
        string _fileName;
        DataTable _dataSource;//數(shù)據(jù)源
        string[] _titles = null;//列標(biāo)題
        string[] _fields = null;//字段名
 
        #endregion
 
        #region .ctor
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="dataSource">數(shù)據(jù)源</param>
        public CSVHelper()
        {
            
        }
 
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="titles">要輸出到 Excel 的列標(biāo)題的數(shù)組</param>
        /// <param name="fields">要輸出到 Excel 的字段名稱數(shù)組</param>
        /// <param name="dataSource">數(shù)據(jù)源</param>
        public CSVHelper(string[] titles, string[] fields, DataTable dataSource)
            : this(titles, dataSource)
        {
            if (fields == null || fields.Length == 0)
                throw new ArgumentNullException("fields");
            if (titles.Length != fields.Length)
                throw new ArgumentException("titles.Length != fields.Length", "fields");
 
            _fields = fields;
        }
 
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="titles">要輸出到 Excel 的列標(biāo)題的數(shù)組</param>
        /// <param name="dataSource">數(shù)據(jù)源</param>
        public CSVHelper(string[] titles, DataTable dataSource)
            : this(dataSource)
        {
            if (titles == null || titles.Length == 0)
                throw new ArgumentNullException("titles");
 
            _titles = titles;
        }
 
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="dataSource">數(shù)據(jù)源</param>
        public CSVHelper(DataTable dataSource)
        {
            if (dataSource == null)
                throw new ArgumentNullException("dataSource");
            // maybe more checks needed here (IEnumerable, IList, IListSource, ) ???
            // 很難判斷,先簡(jiǎn)單的使用 DataTable
 
            _dataSource = dataSource;
        }
 
        #endregion
 
        #region public Methods
 
        #region  導(dǎo)出到CSV文件并且提示下載
        /// <summary>
        /// 導(dǎo)出到CSV文件并且提示下載
        /// </summary>
        /// <param name="fileName"></param>
        public void DataToCSV(string fileName)
        {
            // 確保有一個(gè)合法的輸出文件名
            //if (fileName == null || fileName == string.Empty || !(fileName.ToLower().EndsWith(".csv")))
            //    fileName = GetRandomFileName();
            string data = ExportCSV();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Expires = 0;
            HttpContext.Current.Response.BufferOutput = true;
            HttpContext.Current.Response.Charset = "GB2312";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            HttpContext.Current.Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}.csv", System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)));
            HttpContext.Current.Response.ContentType = "text/h323;charset=gbk";
            HttpContext.Current.Response.Write(data);
            HttpContext.Current.Response.End();
        }
 
        #endregion
 
        /// <summary>
        /// 獲取CSV導(dǎo)入的數(shù)據(jù)
        /// </summary>
        /// <param name="filePath">文件路徑</param>
        /// <param name="fileName">文件名稱(.csv不用加)</param>
        /// <returns></returns>
        public DataTable GetCsvData(string filePath,string fileName)
        {
            string path = Path.Combine(filePath, fileName + ".csv");
            string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + filePath + ";Extensions=asc,csv,tab,txt;";
            try
            {
                using (OdbcConnection odbcConn = new OdbcConnection(connString))
                {
                    odbcConn.Open();
                    OdbcCommand oleComm = new OdbcCommand();
                    oleComm.Connection = odbcConn;
                    oleComm.CommandText = "select * from [" + fileName + "#csv]";
                    OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds, fileName);
                    return ds.Tables[0];
                    odbcConn.Close();
                }
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
            }
            catch (Exception ex)
            {
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
                throw ex;
            }
        }
        #endregion
 
        #region 返回寫入CSV的字符串
        /// <summary>
        /// 返回寫入CSV的字符串
        /// </summary>
        /// <returns></returns>
        private string ExportCSV()
        {   
            if(_dataSource==null)
                throw new ArgumentNullException("dataSource");
 
            StringBuilder strbData = new StringBuilder();
            if (_titles == null)
            {
                //添加列名
                foreach (DataColumn column in _dataSource.Columns)
                {
                    strbData.Append(column.ColumnName + ",");
                }
                strbData.Append("\n");
                foreach (DataRow dr in _dataSource.Rows)
                {
                    for (int i = 0; i < _dataSource.Columns.Count; i++)
                    {
                        strbData.Append(dr[i].ToString() + ",");
                    }
                    strbData.Append("\n");
                }
                return strbData.ToString();
            }
            else
            {
                foreach (string columnName in _titles)
                {
                    strbData.Append(columnName + ",");
                }
                strbData.Append("\n");
                if (_fields == null)
                {
                    foreach (DataRow dr in _dataSource.Rows)
                    {
                        for (int i = 0; i < _dataSource.Columns.Count; i++)
                        {
                            strbData.Append(dr[i].ToString() + ",");
                        }
                        strbData.Append("\n");
                    }
                    return strbData.ToString();
                }
                else
                {
                    foreach (DataRow dr in _dataSource.Rows)
                    {
                        for (int i = 0; i < _fields.Length; i++)
                        {
                            strbData.Append(_fields[i].ToString() + ",");
                        }
                        strbData.Append("\n");
                    }
                    return strbData.ToString();
                }
            }
        }
        #endregion
 
        #region 得到一個(gè)隨意的文件名
        /// <summary>
        /// 得到一個(gè)隨意的文件名
        /// </summary>
        /// <returns></returns>
        private string GetRandomFileName()
        {
            Random rnd = new Random((int)(DateTime.Now.Ticks));
            string s = rnd.Next(Int32.MaxValue).ToString();
            return DateTime.Now.ToShortDateString() + "_" + s + ".csv";
        }
        #endregion
    }
 
}
 

標(biāo)簽: isp 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:C#將當(dāng)前屏幕抓取下來保存為圖片

下一篇:C#控制臺(tái)列出當(dāng)前所有可用的打印機(jī)列表