我意识到这是一个新手问题,但我正在寻找一个简单的解决方案 - 似乎应该有一个.
将CSV文件导入强类型数据结构的最佳方法是什么?再简单=更好.
我有一个CSV文件,其中包含各种数据列表(日期时间,小数).来自CSV的示例行:
Date,Open,High,Low,Close,Volume,Adj Close //I need to skip this first line as well
2012-11-01,77.60,78.12,77.37,78.05,186200,78.05
Run Code Online (Sandbox Code Playgroud)
我有一个创建的对象列表,我想读取每一行.对象的构造函数如下所示,每个CSV行的每个字段都在此处使用和分配.
public DailyValues(DateTime date, decimal open, decimal high, decimal low,
decimal close, decimal volume, decimal adjClose)
: this()
{
Date = date;
Open = open;
High = high;
Low = low;
Close = close;
Volume = volume;
AdjClose = adjClose;
}
List<DailyValues> values = new List<DailyValues>();
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将CSV的每一行读入我的列表values
并适当地分配每个属性(即日期,开放,高)?
可能重复:
CSV文件导入.Net
在.net中,是否有一个标准库应该用于读取csv文件?Web上的所有示例都会使用自己的csv阅读器/解析器,或者使用OleDb.
使用任何这些解决方案都不是问题,我只是想知道是否有一个普遍接受的库(不是我能找到的),或者其他任何"正确"的方法吗?
如何读取CSV文件并在Visual Basic 2010中以网格显示结果?这听起来很简单,但谷歌搜索了一段时间后仍然找不到答案.我在表单上有DataGridView,它叫做DataGridView1.我有一个只有3列数据的csv,我希望能够显示它们.
我想阅读CSV文件的内容并创建数据集.我这样想:
var lines = File.ReadAllLines("test.csv").Select(a => a.Split(';'));
DataSet ds = new DataSet();
ds.load(lines);
Run Code Online (Sandbox Code Playgroud)
但显然这是不正确的.
我正在解析CSV文件并将数据放在结构中.我使用的是TextFieldParser
从这个问题和它的工作相似,但它返回一个魅力String[]
.目前我有一个丑陋的过程:
String[] row = parser.ReadFields();
DispatchCall call = new DispatchCall();
if (!int.TryParse(row[0], out call.AccountID)) {
Console.WriteLine("Invalid Row: " + parser.LineNumber);
continue;
}
call.WorkOrder = row[1];
call.Description = row[2];
call.Date = row[3];
call.RequestedDate = row[4];
call.EstStartDate = row[5];
call.CustomerID = row[6];
call.CustomerName = row[7];
call.Caller = row[8];
call.EquipmentID = row[9];
call.Item = row[10];
call.TerritoryDesc = row[11];
call.Technician = row[12];
call.BillCode = row[13];
call.CallType = row[14];
call.Priority = row[15];
call.Status = row[16];
call.Comment = row[17];
call.Street …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用C#来解析CSV.","
如果我的标题计数等于我的匹配计数,我使用正则表达式来查找和读取字符串.
如果我有一个像这样的值,这将不起作用:
"a",""b","x","y"","c"
Run Code Online (Sandbox Code Playgroud)
然后我的输出是:
'a'
'"b'
'x'
'y"'
'c'
Run Code Online (Sandbox Code Playgroud)
但我想要的是:
'a'
'"b","x","y"'
'c'
Run Code Online (Sandbox Code Playgroud)
我可以使用任何正则表达式或任何其他逻辑吗?
我知道如何阅读和显示.csv文件的一行.现在我想解析该文件,将其内容存储在数组中,并将这些数组用作我创建的某些类的值.
我想学习如何.
这是一个例子:
basketball,2011/01/28,Rockets,Blazers,98,99
baseball,2011/08/22,Yankees,Redsox,4,3
Run Code Online (Sandbox Code Playgroud)
如您所见,每个字段用逗号分隔.我创建了Basketball.cs和Baseball类,它是Sport.cs类的扩展,它包含以下字段:
private string sport;
private string date;
private string team1;
private string team2;
private string score;
Run Code Online (Sandbox Code Playgroud)
我知道这很简单,并且有更好的方法来存储这些信息,即为每个团队创建类,使日期成为DateType数据类型,以及更多相同但我想知道如何将此信息输入到类.
我假设这与getter和setter有关...我也读过字典和集合,但我想通过将它们全部存储在数组中来开始简单...(如果这有意义.. .随意纠正我).
这是我到目前为止所拥有的.它所做的就是阅读csv并在控制台上鹦鹉学舌:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Assign01
{
class Program
{
static void Main(string[] args)
{
string line;
FileStream aFile = new FileStream("../../sportsResults.csv", FileMode.Open);
StreamReader sr = new StreamReader(aFile);
// read data in line by line
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
line = sr.ReadLine();
}
sr.Close();
} …
Run Code Online (Sandbox Code Playgroud) 我正在建立一个网站,其中一个要求是用户从他们的电子邮件客户端导出他们的联系人以将其导入网站.
因为每个电子邮件客户端以稍微不同的格式导出他们的联系人,所以我的头脑不得不以最好的方式来接近它.因为我不知道这些字段是什么,或者分隔符是什么.
我只想找到主要的电子邮件客户端/地址簿(outlook,apple mail,entourage,thunderbird).所有这些都有完全不同的格式.Entourage使用tab作为分隔符,其余的使用逗号等.我只需要拔出电子邮件地址和(如果可用)名称.名称变得棘手,因为一些客户端具有名字/姓氏的单独字段.
使用FileHelper是理想的,但在我可以连接解决方案之前,我似乎需要知道csv的结构.如果可能的话,我宁愿不去编写我自己的csv解析器.
这是我对集体蜂巢思想的看法:
....使用/购买已经执行此操作的现有组件?!(我肯定找不到一个!)
思考?
处理一个带有CSV文件并在每个","上拆分的程序.我遇到的问题是有些数字中有千个分隔符.在CSV文件中,数字正确呈现.当作为文本文档查看时,它们显示如下:
狗,猫,100,100,鱼
在CSV文件中,有四个单元格,值为"Dog","Cat","100,000","Fish".当我将","拆分为一个字符串数组时,它包含5个元素,当我想要的是4.有人知道解决这个问题的方法吗?
谢谢