我.Split(',')在字符串上使用该方法,我知道该字符串由逗号分隔,我希望将这些值分开并放入string[]对象中.这适用于这样的字符串:
78,969.82,GW440,.
但是当第二个值超过1000时,值开始看起来不同,就像在这个例子中找到的那样:
79,"1,013.42",GW450,....
这些值来自电子表格控件,我在其中使用内置控件的ExportToCsv(...)方法,并解释了为什么实际数值的格式化版本.
有没有办法可以让.Split(',')方法忽略引号内的逗号?我实际上并不希望将值"1,013.42"拆分为"1和013.42".
有任何想法吗?谢谢!
我真的很想在不使用第三方工具的情况下这样做,因为我的用例实际上并没有涉及除此之外的许多其他情况,即使它是我工作解决方案的一部分,使用这样的工具并没有真正受益此刻的任何人.我希望有一些东西可以快速解决我丢失的这个特殊用例,但现在是周末,我会看到周一我能不能再给这个问题多一次更新了解决方案我最终来了起来.到目前为止,谢谢大家的帮助,我将在星期一进一步评估每个答案.
我正在尝试使用在使用C#读取CSV文件中找到的TextfieldParser .我正在使用VS 2010并在C#中执行此操作.
我继续得到"类型或命名空间"TextFieldParser"无法找到.."
当我尝试添加使用行时,它只会使用Microsoft.VisualBasic; 深入而不使用Microsoft.VisualBasic.FileIO;
任何帮助都会很棒.
我正在尝试读取其中包含多行单元格的 CSV 文件。
这是 CSV 的样子:

第 1 行,“详细信息”列有多行。
当我尝试使用ReadLine()方法阅读它时:
private void buttonBrowse_Click(object sender, EventArgs e)
{
openFileDialog.Filter = "Excel Worksheets|*.csv";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
String filePathAndName = openFileDialog.FileName;
StreamReader reader = new StreamReader(filePathAndName);
String line = reader.ReadLine();
Console.WriteLine(line);
do
{
line = reader.ReadLine();
Console.WriteLine(line);
} while (line != null);
}
}
Run Code Online (Sandbox Code Playgroud)
它将具有多行的单元格拆分为行数:
[1]"Time of Day","Process Name","PID","Operation","Path","Result","Detail","Image Path"
[2]"22:52:24.2905182","notepad.exe","4828","Process Start","","SUCCESS","Parent PID: 2484, Command line: ""C:\Windows\system32\notepad.exe"" , Current directory: C:\Users\User\, Environment:
[3]; =::=::\
[4]; ALLUSERSPROFILE=C:\ProgramData
[5]; APPDATA=C:\Users\User\AppData\Roaming
[6]; …Run Code Online (Sandbox Code Playgroud) 所以过去一周我一直在尝试构建一个 CSV 解析器,我尝试了 Oledb 阅读器,但似乎我必须有一个链接到某个文件夹的连接字符串,而我想要一个动态位置。我现在已经构建了这个,虽然在第 4 行看起来几乎就在那里:
StreamReader reader = new StreamReader(File.OpenRead(attachmentcsv));
Run Code Online (Sandbox Code Playgroud)
文件有下划线说
Controller.File(byte[].string) 是一个方法,在当前上下文中无效
我认为这意味着我需要将它放在一个函数中,尽管它是我唯一会使用它的地方,并且在我与函数斗争时并不真正想要,还有其他选择吗?
[HttpPost]
public ActionResult CreateBulk(HttpPostedFileBase attachmentcsv)
{
StreamReader reader = new StreamReader(File.OpenRead(attachmentcsv));
List<string> clientN = new List<String>();
List<string> homePage = new List<String>();
List<string> clientEmail = new List<String>();
List<string> contName = new List<String>();
List<string> monthlyQuota = new List<String>();
List<string> MJTopicsID = new List<String>();
//string vara1, vara2, vara3, vara4;
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (!String.IsNullOrWhiteSpace(line))
{
string[] values = line.Split(',');
if (values.Length >= 4) …Run Code Online (Sandbox Code Playgroud) 我有一个 CSV 文件,某些列中有很多尾随空格,因此我尝试编写一个简单的 Windows 窗体应用程序,该应用程序循环遍历 CSV 中的所有行并删除尾随空格。我认为我还很远,但我有一种感觉,C# 将其视为一行:
"Lorem ipsum dolor sit amet","Default ",9999,1,"base "
Run Code Online (Sandbox Code Playgroud)
虽然它应该将其视为一行:
"Lorem ipsum dolor sit amet"
Run Code Online (Sandbox Code Playgroud)
这是我现在的代码:
String path = @"C:\Users\me\Documents\test.csv";
string[] allLines = File.ReadAllLines(path);
using (StreamWriter sw = new StreamWriter(path))
{
foreach (string line in allLines)
{
if (!string.IsNullOrEmpty(line) && line.Length > 1)
{
line.TrimEnd(' ');
sw.WriteLine(line);
//sw.WriteLine(line.TrimEnd(' '));
}
}
}
Console.WriteLine(allLines);
Console.WriteLine("Done");
Run Code Online (Sandbox Code Playgroud)
我如何确保我的 CSV 文件是这样的:
"Lorem ipsum dolor sit amet ","Default ",9999,1,"base "
"simple","Default ",9999,1," base"
"test ","Default ",9999,1,"base"
Run Code Online (Sandbox Code Playgroud)
运行如下 C# 代码后会出现(因此末尾和开头没有空格): …