zoukankan      html  css  js  c++  java
  • C# 处理csv格式的Excel文件代码

    public class CSVFileHelper
    {
    /// <summary>
    /// 将DataTable中数据写入到CSV文件中
    /// </summary>
    /// <param name="dt">提供保存数据的DataTable</param>
    /// <param name="fileName">CSV的文件路径</param>
    public static void SaveCSV(DataTable dt, string fullPath)
    {
    FileInfo fi = new FileInfo(fullPath);
    if (!fi.Directory.Exists)
    {
    fi.Directory.Create();
    }
    FileStream fs = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
    //StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
    string data = "";
    //写出列名称
    for (int i = 0; i < dt.Columns.Count; i++)
    {
    data += dt.Columns[i].ColumnName.ToString();
    if (i < dt.Columns.Count - 1)
    {
    data += ",";
    }
    }
    sw.WriteLine(data);
    //写出各行数据
    for (int i = 0; i < dt.Rows.Count; i++)
    {
    data = "";
    for (int j = 0; j < dt.Columns.Count; j++)
    {
    string str = dt.Rows[i][j].ToString();
    str = str.Replace(""", """");//替换英文冒号 英文冒号需要换成两个冒号
    if (str.Contains(',') || str.Contains('"')
    || str.Contains(' ') || str.Contains(' ')) //含逗号 冒号 换行符的需要放到引号中
    {
    str = string.Format(""{0}"", str);
    }

    data += str;
    if (j < dt.Columns.Count - 1)
    {
    data += ",";
    }
    }
    sw.WriteLine(data);
    }
    sw.Close();
    fs.Close();
    DialogResult result = MessageBox.Show("CSV文件保存成功!");
    if (result == DialogResult.OK)
    {
    //System.Diagnostics.Process.Start("explorer.exe", Common.PATH_LANG);
    }
    }

    /// <summary>
    /// 将CSV文件的数据读取到DataTable中
    /// </summary>
    /// <param name="fileName">CSV文件路径</param>
    /// <returns>返回读取了CSV数据的DataTable</returns>
    public static DataTable OpenCSV(string filePath)
    {

    //Encoding encoding = Common.GetType(filePath); //Encoding.ASCII;//
    DataTable dt = new DataTable();
    FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

    //StreamReader sr = new StreamReader(fs, Encoding.UTF8);
    StreamReader sr = new StreamReader(fs, Encoding.Default);
    //string fileContent = sr.ReadToEnd();
    //encoding = sr.CurrentEncoding;
    //记录每次读取的一行记录
    string strLine = "";
    //记录每行记录中的各字段内容
    string[] aryLine = null;
    string[] tableHead = null;
    //标示列数
    int columnCount = 0;
    //标示是否是读取的第一行
    bool IsFirst = true;
    //逐行读取CSV中的数据
    while ((strLine = sr.ReadLine()) != null)
    {

    if (IsFirst == true)
    {
    tableHead = strLine.Split(',');
    IsFirst = false;
    columnCount = tableHead.Length;
    //创建列
    for (int i = 0; i < columnCount; i++)
    {
    DataColumn dc = new DataColumn(tableHead[i]);
    dt.Columns.Add(dc);
    }
    }
    else
    {
    aryLine = strLine.Split(',');
    DataRow dr = dt.NewRow();
    for (int j = 0; j < aryLine.Length; j++)
    {
    dr[j] = aryLine[j];
    }
    dt.Rows.Add(dr);
    }
    }
    if (aryLine != null && aryLine.Length > 0)
    {
    dt.DefaultView.Sort = tableHead[0] + " " + "asc";
    }

    sr.Close();
    fs.Close();
    return dt;
    }
    }

  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/4065188.html
Copyright © 2011-2022 走看看