Tag: csv

有没有人知道更快的方法来做String.Split()?

我正在读取CSV文件的每一行,需要获取每列中的各个值。 所以现在我只是使用: values = line.Split(delimiter); 其中line是一个字符串,用于保存由分隔符分隔的值。 测量我的ReadNextRow方法的性能我注意到它在String.Split上花了66%,所以我想知道是否有人知道更快的方法来做到这一点。 谢谢!

是否有“正确”的方式来读取CSV文件

可能重复: CSV文件导入.Net 在.net中,是否有一个标准库应该用于读取csv文件? Web上的所有示例都会使用自己的csv读取器/解析器,或者使用OleDb。 使用任何这些解决方案都不是问题,我只是想知道是否有一个普遍接受的库(不是我能找到的),或者其他任何“正确”的方法吗?

使用C#搜索CSV文件并在其旁边的列中提取值

我正在尝试创建我正在编写的程序(Visual Studio中的C#)在外部CSV文件中查找值,并将下一列中的值拉回到WinForm中的标签中。 我的CSV文件是使用虚拟数据的测试,它是: > old,newuser,newpassword > firstlinetomakesure,firstnewusername,firstnewpassword > adslusernameplaintext,thisisthenewuser,andthisisthenewpassword > hello,terion,nadiomn > somethingdownhere,thisisthelastuser,andthisisthelastpassword > 11,12,13 > 21,22,23 > 31,32,33 我尝试在下面的链接中使用解决方案,但只能返回最后一行第二列中的值。 使用c#在csv文件中搜索值 我一直在尝试让程序在“旧”列中搜索值,然后从匹配行的“newuser”列中提取值。 然后这将进入WinForm中的标签。 任何示例代码或建议将不胜感激。

使用DataReader和OLEDB Jet数据提供程序读取CSV文件时,如何控制列数据类型?

在我的C#应用​​程序中,我使用Microsoft Jet OLEDB数据提供程序来读取CSV文件。 连接字符串如下所示: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Data;Extended Properties=”text;HDR=Yes;FMT=Delimited 我使用该连接字符串打开ADO.NET OleDbConnection,并使用以下命令从CSV文件中选择所有行: select * from Data.csv 当我打开OleDbDataReader并检查它返回的列的数据类型时,我发现堆栈中的某些东西试图根据文件中的第一行数据猜测数据类型。 例如,假设CSV文件包含: House,Street,Town 123,Fake Street,Springfield 12a,Evergreen Terrace,Springfield 为House列调用OleDbDataReader.GetDataTypeName方法将显示该列已被赋予数据类型“DBTYPE_I4”,因此从中读取的所有值都被解释为整数。 我的问题是House应该是一个字符串 – 当我尝试从第二行读取House值时,OleDbDataReader返回null。 如何判断Jet数据库提供程序或OleDbDataReader是否将列解释为字符串而不是数字?

写入CSV文件并导出?

在C#ASP.net中,有人可以告诉我如何将数组/列表中的条目写入服务器上的CSV文件,然后打开文件吗? 我认为第二部分可能是 – Response.Redirect(“ http://myserver.com/file.csv ”),但不确定如何在服务器上写入文件。 此外,如果许多用户访问此页面,是否每次生成新的CSV文件或覆盖同一文件更好? 如果两个用户都尝试访问相同的CSV文件等,是否会出现读/写/锁定问题? 更新: 这可能是一个愚蠢的问题,我在Google上搜索过,但我无法找到明确的答案 – 你如何将CSV文件写入网络服务器并将其导出到C#ASP.net? 我知道如何生成它,但我想将其保存到www.mysite.com/my.csv然后导出它。

使用C#使用OleDb解析CSV

我知道这个话题已经完成了死亡,但我还是有智慧。 我需要解析一个csv。 这是一个非常普通的CSV和解析逻辑是由另一个开发人员使用OleDB编写的,他在他去度假之前发誓它有效:) CSV sample: Dispatch Date,Master Tape,Master Time Code,Material ID,Channel,Title,Version,Duration,Language,Producer,Edit Date,Packaging,1 st TX,Last TX,Usage,S&P Rating,Comments,Replace,Event TX Date,Alternate Title ,a,b,c,d,e,f,g,h,,i,,j,k,,l,m,,n, 我遇到的问题是我遇到了各种错误,具体取决于我尝试的连接字符串。 当我尝试连接字符串时: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”D:\TEST.csv\”;Extended Properties=”text;HDR=No;FMT=Delimited” 我收到错误: ‘D:\TEST.csv’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides. 当我尝试连接字符串时: […]

将值数组发送到Oracle过程以在WHERE IN子句中使用

我在Oracle中有一个存储过程,如下所示: CREATE PROCEDURE MY_TEST_PROC( CUR OUT SYS_REFCURSOR, PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN ) AS BEGIN OPEN CUR FOR SELECT * FROM MY_TABLE WHERE COL1 IN (here I want to put values received from C#) END; 在ASP.NET应用程序端,我有一个包含多个选项的select元素。 我想在WHERE子句中使用这些列表项。 我知道我可以在我的存储过程中有一个VARCHAR2输入参数,从列表项中创建一个逗号分隔的字符串,然后将其发送到过程。 这样做有两个问题: 我使我的网站容易受到SQL注入攻击 在我的存储过程中,我必须使用我想避免的EXECUTE(’SELECT …’)模式。 如何将这些列表项发送到存储过程并在WHERE IN子句中使用它们? 我正在使用ODP.NET并听说过UDT但不知道如何使用它。