• csv 格式文件 导入导出


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.Common;
    using System.Data.OleDb;
    using System.IO;

    /// <summary>
    /// DataSet2CSV 的摘要说明
    /// </summary>
    public class DataSet2CSV
    {
        public DataSet2CSV()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        #region 001----将DataSet转换成CSV文件
        public static void Export2CSV(DataSet ds, string tableName, bool containColumName, string fileName)
        {
            string csvStr = ConverDataSet2CSV(ds, tableName, containColumName);
            if (csvStr == "") return;
            FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
            //将string转换成byte[]
            byte[] csvArray = System.Text.Encoding.ASCII.GetBytes(csvStr.ToCharArray(), 0, csvStr.Length - 1);
            fs.Write(csvArray, 0, csvStr.Length - 1);
            fs.Close();
            fs = null;
        }

        /// <summary>
        /// 将指定的数据集中指定的表转换成CSV字符串
        /// </summary>
        /// <param name="ds"></param>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public static string ConverDataSet2CSV(DataSet ds, string tableName, bool containColumName)
        {
            //首先判断数据集中是否包含指定的表
            if (ds == null || (!ds.Tables.Contains(tableName) && ds.Tables.Count < int.Parse(tableName)))
            {
                //MessageBox.Show("指定的数据集为空或不包含要写出的数据表!", "系统提示:", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                return "";
            }
            string csvStr = "";
            //下面写出数据
            DataTable tb = !ds.Tables.Contains(tableName) ? ds.Tables[int.Parse(tableName)]: ds.Tables[tableName];
            //写表名
            //csvStr += tb.TableName + "\n";
            //第一步:写出列名
            if (containColumName)
            {
                foreach (DataColumn column in tb.Columns)
                {
                    csvStr += "\"" + column.ColumnName + "\"" + ",";
                }
                //去掉最后一个","
                csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
                csvStr += "\n";
            }
            //第二步:写出数据
            foreach (DataRow row in tb.Rows)
            {
                foreach (DataColumn column in tb.Columns)
                {
                    csvStr += "\"" + row[column].ToString() + "\"" + ",";
                }
                csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
                csvStr += "\n";
            }
            return csvStr;
        }

        #endregion

        #region 002----从CSV文件填充DataSet
        public static DataSet ConverCSV2DataSet(string fileName, string tableName, int StartSN, int EndSN)
        {
            DataSet ds = new DataSet();
            string _filePath, _fileName;
            _filePath = fileName.Substring(0, fileName.LastIndexOf(@"\") + 1);
            _fileName = fileName.Substring(fileName.LastIndexOf(@"\") + 1);
            string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + _filePath + @"\" + ";Extended Properties=\"Text;HDR=Yes;FMT=Delimited\"";
            OleDbConnection oleCon = new OleDbConnection(conStr);
            OleDbDataAdapter da = new OleDbDataAdapter("Select * from " + _fileName + " where cint(one) >=" + StartSN + " and cint(one) <=" + EndSN, oleCon);
            da.Fill(ds, tableName);
            oleCon.Close();
            return ds;
        }
        #endregion
    }

  • 相关阅读:
    古典兔子问题
    (I/O流)在100ms内桌面上生成一个200M大小的文件
    搭建手机UI自动化
    关于String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    关于数据库范式的理解
    Orcl分页查询的语法示例
    Eclipse alt+/语法不提示的解决方法
    redis 使用rdb从高版本迁移至低版本
    redis集群详解
    Linux firewall防火墙设置
  • 原文地址:https://www.cnblogs.com/xianzuoqiaoqi/p/1502199.html
Copyright © 2020-2023  润新知