CSV文件是 逗号分隔值文件

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

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

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

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

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

所以我们可以直接用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 = ; i < csvReader.FieldCount; i++)
{
dt.Columns.Add(new DataColumn(headers[i]));
} while (csvReader.ReadNextRecord())
{
DataRow row = dt.NewRow();
for (int i = ; i < csvReader.FieldCount; i++)
{
row[i] = csvReader[i].Replace("\t", "").Replace(" ", "");
}
dt.Rows.Add(row);
}
}
导出数据成CSV文件
     SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = ;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到"; DateTime now = DateTime.Now;
saveFileDialog.FileName = now.Year.ToString().PadLeft()
+ now.Month.ToString().PadLeft(, '')
+ now.Day.ToString().PadLeft(, '') + "-"
+ now.Hour.ToString().PadLeft(, '')
+ now.Minute.ToString().PadLeft(, '')
+ now.Second.ToString().PadLeft(, ''); saveFileDialog.ShowDialog(); Stream myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = ; i < dt.ColumnCount; i++)
{
if (i > )
{
str += "\t";
}
str += dt.Columns[i].HeaderText;
} sw.WriteLine(str);
//写内容
for (int j = ; j < dt.Rows.Count; j++)
{
string tempStr = "";
for (int k = ; k < dt.Columns.Count; k++)
{
if (k > )
{
tempStr += "\t";
}
tempStr += dt.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
} //这个方式用的最多..也是最效率的方式导出成为CSV文件..大概20万条数据只需要十几秒的样子..非常方便
//在这里谢谢那些以前翻资料看到文章的那些大神..时间久了都忘却了是哪位..但是还是谢谢..
05-11 11:11
查看更多