CSVHelper



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Data;
using DEV_JIZHANG.Models;

namespace DEV_JIZHANG.Common
{
    public class CSVHelp
    {

        public char[] chSplit = new char[] { '|' };
        #region public function
        public DataTable ImportCSVToDataTable(
            string RecoveryPath,
            ref string err)
        {
            int intColCount = 0;
            bool blnFlag = true;
            DataTable mydt = new DataTable("myTableName");
            DataColumn mydc;
            DataRow mydr;
            //string   strpath   =   "test.wxt";      
            string strline;
            string[] aryline;

            try
            {
                System.IO.StreamReader mysr = new System.IO.StreamReader(RecoveryPath);
                while ((strline = mysr.ReadLine()) != null)
                {
                    aryline = strline.Split(chSplit);
                    if (blnFlag)
                    {
                        blnFlag = false;
                        intColCount = aryline.Length;
                        for (int i = 0; i < aryline.Length; i++)
                        {
                            mydc = new DataColumn(aryline[i]);
                            mydc.ColumnName = i.ToString();
                            mydt.Columns.Add(mydc);
                        }
                    }
                    mydr = mydt.NewRow();
                    for (int i = 0; i < intColCount; i++)
                    {
                        mydr[i] = aryline[i];
                    }
                    mydt.Rows.Add(mydr);
                }

                return mydt;
            }
            catch (Exception ex)
            {
                err = ex.ToString();
                return null;
            }

            //dgData.DataSource =mydt;    
            //dgData.DataBind(); 
        }

        public void DataTableToCSVFile(
            System.Data.DataTable dt,
            string BackupPath,
            string strSplitChar,
            ref string err)
        {

            string row;
            try
            {
                //string header;
                string tmp;
                //StreamReader sr = new StreamReader(xbkPath);
                //header = sr.ReadLine();
                //sr.Close();
                FileStream fs = File.Create(BackupPath);
                StreamWriter sw = new StreamWriter(fs);
                //sw.WriteLine(header);

                foreach (DataRow dr in dt.Rows)
                {
                    row = "";
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (i != dt.Columns.Count - 1)
                        {
                            tmp = dr[i].ToString().Trim().Replace(strSplitChar, "");
                            row = row + tmp + strSplitChar;
                        }
                        else
                        {
                            tmp = dr[i].ToString().Trim().Replace(strSplitChar, "");
                            row = row + tmp;
                        }
                    }
                    sw.WriteLine(row);

                }
                sw.Flush();
                sw.Close();
            }
            catch (Exception ex)
            {
                err = ex.ToString();
            }
        }

        //默认密钥向量
        public byte[] Keys = { 0xEF, 0xAB, 0x56, 0x73, 0x90, 0x32, 0xCD, 0x12 };
        /// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密的字符串</param>
        /// <param name="encryptKey">加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
        public string EncryptDES(string encryptString, string encryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                return encryptString;
            }
        }
        #endregion
    }
}

posted @ 2010-09-01 12:26  我的奶酪我做主  阅读(571)  评论(0编辑  收藏  举报