wah*_*eit 58
不使用第三方组件的选择是使用该类Microsoft.VisualBasic.FileIO.TextFieldParser
(http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx).它提供了解析CSV的所有功能.导入Microsoft.VisualBasic程序集就足够了.
var parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(file);
parser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
parser.SetDelimiters(new string[] { ";" });
while (!parser.EndOfData)
{
string[] row = parser.ReadFields();
/* do something */
}
Run Code Online (Sandbox Code Playgroud)
kom*_*bsh 21
您可以在C#中使用Microsoft.VisualBasic.FileIO.TextFieldParser类:
using System;
using System.Data;
using Microsoft.VisualBasic.FileIO;
static void Main()
{
string csv_file_path = @"C:\Users\Administrator\Desktop\test.csv";
DataTable csvData = GetDataTableFromCSVFile(csv_file_path);
Console.WriteLine("Rows count:" + csvData.Rows.Count);
Console.ReadLine();
}
private static DataTable GetDataTableFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
try
{
using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
}
catch (Exception ex)
{
}
return csvData;
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试CsvHelper,这是我工作的项目.它的目标是使读取和写入CSV文件尽可能简单,同时速度非常快.
您可以从CSV文件中读取以下几种方法.
// By type
var records = csv.GetRecords<MyClass>();
var records = csv.GetRecords( typeof( MyClass ) );
// Dynamic
var records = csv.GetRecords<dynamic>();
// Using anonymous type for the class definition
var anonymousTypeDefinition =
{
Id = default( int ),
Name = string.Empty,
MyClass = new MyClass()
};
var records = csv.GetRecords( anonymousTypeDefinition );
Run Code Online (Sandbox Code Playgroud)
我通常使用这样一种简单的方法:
var path = Server.MapPath("~/App_Data/Data.csv");
var csvRows = System.IO.File.ReadAllLines(path, Encoding.Default).ToList();
foreach (var row in csvRows.Skip(1))
{
var columns = row.Split(';');
var field1 = columns[0];
var field2 = columns[1];
var field3 = columns[2];
}
Run Code Online (Sandbox Code Playgroud)
您可能对CodeProject上的 Linq2Csv 库感兴趣。您需要检查的一件事是,它是否仅在需要时读取数据,这样在处理较大的文件时就不需要大量内存。
至于在浏览器上显示数据,您可以做很多事情来完成它,如果您更具体地了解您的要求,答案可能更具体,但您可以做的事情: 1.
使用 HttpListener 类编写简单的Web 服务器(您可以在网上找到许多示例来托管迷你 http 服务器)。
2.使用Asp.Net或Asp.Net Mvc,创建一个页面,使用IIS托管它。
归档时间: |
|
查看次数: |
78111 次 |
最近记录: |