相关疑难解决方法(0)

c#读取csv文件不提供有效路径

我似乎无法使用以下连接字符串读取.csv文件:

var fileName = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Uploads\\countrylist.csv");
string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""text;HDR=YES;FMT=Delimited""", fileName);
OleDbConnection oledbConn = new OleDbConnection(connectionString);
oledbConn.Open();
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

'D:\ arrgh\arrgh\Uploads\countrylist.csv'不是有效路径.确保路径名拼写正确,并且您已连接到文件所在的服务器.

我确认文件在那里.这里发生了什么?

c# csv oledb

26
推荐指数
1
解决办法
3万
查看次数

在.NET中处理大型csv的最有效方法

原谅我的愚蠢,但我只需要一些指导,我找不到另一个问题来回答这个问题.我有一个相当大的csv文件(约300k行),我需要确定给定的输入,csv中的任何行是否以该输入开头.我按字母顺序对csv进行了排序,但我不知道:

1)如何处理csv中的行 - 我应该将其作为列表/集合读取,还是使用OLEDB,嵌入式数据库或其他?

2)如何从按字母顺序排列的列表中有效地找到一些东西(使用它进行排序以加快速度的事实,而不是搜索整个列表)

.net c# vb.net csv search

8
推荐指数
3
解决办法
2万
查看次数

C#数据集访问数据库

我有一个从csv文件动态创建的数据集.我想要做的是将行插入我的MS Access表,但我无法弄清楚从哪里开始.

数据集中数据的标题可以根据顺序而变化,但标题的名称将始终与访问数据库匹配.我是否必须在insert命令中静态调用标题名称,还是可以从数据集中构建标题?

我知道如何创建连接并将其打开到数据库但不知道如何在insert命令中创建动态拉动表头.

在C#编程方面我很绿,所以如果你能为我拼出来,我真的很感激!

以下是访问表标头的示例:

ID,项目,成本,零售

然后是CSV,它将填充数据集表.它可能有零售或可能没有:

物品,成本

这是我到目前为止的代码,但它没有写入访问表.如果我发现dtAccess它正确显示.

 OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\Database.accdb\";Persist Security Info=False;");
                myConnection.Open();

                string queryString = "SELECT * from " + lblTable.Text;

                OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, myConnection);

                DataTable dtAccess = new DataTable();

                DataTable dtCSV = new DataTable();

                dtCSV = ds.Tables[0];

                using (new OleDbCommandBuilder(adapter))
                {
                    adapter.Fill(dtAccess);
                    dtAccess.Merge(dtCSV);
                    adapter.Update(dtAccess);
                }

                myConnection.Close();
Run Code Online (Sandbox Code Playgroud)

c# ms-access dataset

6
推荐指数
1
解决办法
3万
查看次数

使用没有类型的FileHelpers

我有一个从另一个系统导出的CSV文件,其中列顺序和定义可能会更改.我发现FileHelpers非常适合读取csv文件,但是除非在编译应用程序之前知道列的顺序,否则它似乎无法使用它.我想知道它是否可以以非类型的方式使用FileHelpers.目前我正在使用它来读取文件但是我正在手工做的其他事情,所以我有一个类:

[DelimitedRecord(",")]
public class CSVRow
{
    public string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这意味着每一行都在Content其中,这很好,因为我已经分割了行等,但由于文件中固有的逗号,我现在遇到此方法的问题,因此一行可能是:

"something",,,,0,,1,,"something else","","",,,"something, else"
Run Code Online (Sandbox Code Playgroud)

我对这个字符串上的逗号的简单拆分不起作用,因为在"某些东西"中有一个逗号,它会被拆分.显然,FileHelpers之类的东西非常方便,解析这些值并考虑引号.那么有可能以这种方式使用FileHelpers,没有已知的列定义,或者至少能够传递csv字符串并获取值列表,或者是否有任何好的库来执行此操作?

c# csv filehelpers

6
推荐指数
1
解决办法
3718
查看次数

如何从UTF 8编码的csv中删除BOM()字符?

我需要解析一个utf8编码的csv.在转换之后,我刚刚看到问题在于beging的BOM()字符.我无法使用utf8编码创建一个避免BOM的csv,因为我需要解析它,即使它是utf8编码的.

任何人请告诉我如何使用c#.net从csv中删除BOM()字符.

更新:我已经添加了我的代码来读取csv头文件,因为我在文件的开头获取了BOM.

 string CSVConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + ConfigurationSettings.AppSettings["CSVFolder"].ToString() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False;";

        using (OdbcConnection Connection = new OdbcConnection(CSVConnectionString))
        {
            List<string> CSVHeaders = new List<string>();

            string SelectQuery = string.Format(@"SELECT TOP 1 * FROM [{0}]", CSVFileName);

            OdbcCommand Command = new OdbcCommand(SelectQuery, Connection);

            Connection.Open();

            OdbcDataReader Reader = Command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

            int ColumnCount = Reader.FieldCount;

            for (int column = 0; column < ColumnCount; column++)
            {
                CSVHeaders.Add(Reader.GetName(column));
            }

            return CSVHeaders;
        }
Run Code Online (Sandbox Code Playgroud)

c# csv parsing utf-8

5
推荐指数
1
解决办法
1万
查看次数

拆分CSV并在元素中排除逗号

我有一个CSV字符串,我想把它分成一个数组.但是,CSV是字符串和数字的混合,其中字符串用引号括起来,可能包含逗号.

例如,我可能有如下CSV:

1,"Hello",2,"World",3,"Hello, World"
Run Code Online (Sandbox Code Playgroud)

我想它,所以字符串分为:

1
"Hello"
2
"World"
3
"Hello, World"
Run Code Online (Sandbox Code Playgroud)

如果我使用String.Split(',');我得到:

1
"Hello"
2
"World"
3
"Hello
World"
Run Code Online (Sandbox Code Playgroud)

有这么简单的方法吗?已编写的库或是否必须按字符解析字符串?

.net c# csv arrays string

3
推荐指数
1
解决办法
8212
查看次数

正则表达式 - 如何删除"和"之间的逗号?

如何删除(逗号)在"(双引号逗号)和"(双引号逗号)之间.就像有"a","b","c","d,d","e","f",然后从这里,在"和"之间有一个逗号应该被删除,删除该逗号后它应该 "a","b","c","dd","e","f"在C#的正则表达式的帮助下?

编辑:我忘了指定引号之间可能有双逗号"a","b","c","d,d,d","e","f",因为正则表达式不起作用.并且引号之间可以有任意数量的逗号.

并且可以有像那样的字符串a,b,c,"d,d",e,f应该有结果a,b,c,dd,e,f,如果字符串像a,b,c,"d,d,d",e,f那样的结果应该是a,b,c,ddd,e,f.

c# regex

3
推荐指数
2
解决办法
8992
查看次数

使用C#解析CSV文件,忽略千位分隔符

处理一个带有CSV文件并在每个","上拆分的程序.我遇到的问题是有些数字中有千个分隔符.在CSV文件中,数字正确呈现.当作为文本文档查看时,它们显示如下:

狗,猫,100,100,鱼

在CSV文件中,有四个单元格,值为"Dog","Cat","100,000","Fish".当我将","拆分为一个字符串数组时,它包含5个元素,当我想要的是4.有人知道解决这个问题的方法吗?

谢谢

c# csv

1
推荐指数
1
解决办法
2358
查看次数

标签 统计

c# ×8

csv ×6

.net ×2

arrays ×1

dataset ×1

filehelpers ×1

ms-access ×1

oledb ×1

parsing ×1

regex ×1

search ×1

string ×1

utf-8 ×1

vb.net ×1