zoukankan      html  css  js  c++  java
  • CSV文件的读取 导出

    CSV文件是 逗号分隔值文件

    内容基本是这么存的... 

    姓名,年龄,性别/r/n王有才,19,男/r/n王二妞,18,女 

    一行值内用逗号 , 分开  行与行之间用  /r/n  分隔

    说白了,他其实是一个字符串..按照一定的格式存储进文件..可以直接用文本文件打开..

    邮箱,昵称,手机
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000
    "3595768@qq.com",test1,13803852000

    所以我们可以直接用IO操作..把内容读取出来.. 

    使用文件流的方式读取CSV文件
    FileInfo file = new FileInfo(Server.MapPath(filePath));
    StreamReader reader = new StreamReader(Server.MapPath(filePath));
    string fileContent  = reader.ReadToEnd();
    reader.Close();
    reader.Dispose();

    fileContent就是对应的CSV文件的内容..可以使用固定的处理方式截取..断开每一行的数据然后分别处理..

    使用表格的形式读取CSV文件

    但是如果想要更好的处理的话..可以引用  lumenworks.framework.io.dll 

    下载地址:     http://download.csdn.net/detail/sunyanjie_china/8297731

    添加引用 

    using LumenWorks.Framework.IO.Csv;

     代码

    DataTable dt = new DataTable(); //表
    using (CsvReader csvReader = new CsvReader(new StreamReader(Server.MapPath(filePath), Encoding.Default, true), true))
    {
        string[] headers = csvReader.GetFieldHeaders();//标题数组
        for (int i = 0; i < csvReader.FieldCount; i++)
        {
            dt.Columns.Add(new DataColumn(headers[i]));
        }
    
        while (csvReader.ReadNextRecord())
        {
            DataRow row = dt.NewRow();
            for (int i = 0; i < csvReader.FieldCount; i++)
            {
                row[i] = csvReader[i].Replace("	", "").Replace(" ", "");
            }
            dt.Rows.Add(row);
        }
    }
    导出数据成CSV文件
     1     SaveFileDialog saveFileDialog = new SaveFileDialog();
     2     saveFileDialog.Filter = "Execl   files   (*.xls)|*.xls";
     3     saveFileDialog.FilterIndex = 0;
     4     saveFileDialog.RestoreDirectory = true;
     5     saveFileDialog.CreatePrompt = true;
     6     saveFileDialog.Title = "导出Excel文件到";
     7 
     8     DateTime now = DateTime.Now;
     9     saveFileDialog.FileName = now.Year.ToString().PadLeft(2)
    10     + now.Month.ToString().PadLeft(2, '0')
    11     + now.Day.ToString().PadLeft(2, '0') + "-"
    12     + now.Hour.ToString().PadLeft(2, '0')
    13     + now.Minute.ToString().PadLeft(2, '0')
    14     + now.Second.ToString().PadLeft(2, '0');
    15 
    16     saveFileDialog.ShowDialog();
    17 
    18     Stream myStream = saveFileDialog.OpenFile();
    19     StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
    20     string str = "";
    21     try
    22     {
    23         //写标题     
    24         for (int i = 0; i < dt.ColumnCount; i++)
    25         {
    26             if (i > 0)
    27             {
    28                 str += "	";
    29             }
    30             str += dt.Columns[i].HeaderText;
    31         }
    32 
    33         sw.WriteLine(str);
    34         //写内容   
    35         for (int j = 0; j < dt.Rows.Count; j++)
    36         {
    37             string tempStr = "";
    38             for (int k = 0; k < dt.Columns.Count; k++)
    39             {
    40                 if (k > 0)
    41                 {
    42                     tempStr += "	";
    43                 }
    44                 tempStr += dt.Rows[j].Cells[k].Value.ToString();
    45             }
    46             sw.WriteLine(tempStr);
    47         }
    48         sw.Close();
    49         myStream.Close();
    50     }
    51     catch (Exception ex)
    52     {
    53         MessageBox.Show(ex.ToString());
    54     }
    55     finally
    56     {
    57         sw.Close();
    58         myStream.Close();
    59     }

    //这个方式用的最多..也是最效率的方式导出成为CSV文件..大概20万条数据只需要十几秒的样子..非常方便
    //在这里谢谢那些以前翻资料看到文章的那些大神..时间久了都忘却了是哪位..但是还是谢谢..
  • 相关阅读:
    1.Netty 实战前言
    8.Netty发送对象
    7.Netty中 handler 的执行顺序
    6.高性能NIO框架netty
    5.NIO_ Selector选择器
    4.NIO_Channel 通道
    3.NIO_Buffer缓冲区
    2.Java NIO 简介
    那些堪称神器的 Chrome 插件
    获取当前操作的IFrame 对象的方法
  • 原文地址:https://www.cnblogs.com/iiwen/p/4350116.html
Copyright © 2011-2022 走看看