gpt4 book ai didi

c# - 简单的csv阅读器?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:53 26 4
gpt4 key购买 nike

全部,

我从我认为将是一项非常简单的任务开始。 (将 csv 转换为“wiki”格式)但我遇到了一些我无法解决的问题

我有3个主要问题

1)一些单元格包含\r\n (所以当逐行阅读时,这会将每个新行视为一个新单元格

2)一些行包含“,”(我尝试切换到\t删除文件,但我仍然遇到问题,当它在两个“”之间时转义)

3)除了分隔符(“,”或“\t”)之外,有些行是完全空白的,其他行是不完整的(这很好,我只需要确保单元格位于正确的位置)

我已经尝试了一些 CSV 阅读器类,但它们会解决上面列出的问题

我试图让这个应用程序尽可能小,所以我也试图避免只有一小部分做我想做的事情的 dll 和大类。

到目前为止,我有两个“不起作用的尝试

尝试 1(不在单元格中处理\r\n)

OpenFileDialog openFileDialog1 = new OpenFileDialog();

openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
openFileDialog1.Filter = "tab sep file (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (cb_sortable.Checked)
{
header = "{| class=\"wikitable sortable\" border=\"1\" \r\n|+ Sortable table";
}

StringBuilder sb = new StringBuilder();
string line;
bool firstline = true;
StreamReader sr = new StreamReader(openFileDialog1.FileName);

sb.AppendLine(header);

while ((line = sr.ReadLine()) != null)
{

if (line.Replace("\t", "").Length > 1)
{
string[] hold;
string lead = "| ";

if (firstline && cb_header.Checked == true)
{
lead = "| align=\"center\" style=\"background:#f0f0f0;\"| ";
}

hold = line.Split('\t');
sb.AppendLine(table);
foreach (string row in hold)
{
sb.AppendLine(lead + row.Replace("\"", ""));
}


firstline = false;
}
}
sb.AppendLine(footer);
Clipboard.SetText(sb.ToString());
MessageBox.Show("Done!");
}


}
string header = "{| class=\"wikitable\" border=\"1\" ";
string footer = "|}";
string table = "|-";

尝试 2(可以处理\r\n 但将单元格转移到空白单元格上)(尚未完成)

OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
openFileDialog1.Filter = "txt file (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (cb_sortable.Checked)
{
header = "{| class=\"wikitable sortable\" border=\"1\" \r\n|+ Sortable table";
}


using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{


string text = sr.ReadToEnd();
string[] cells = text.Split('\t');
int columnCount = 0;
foreach (string cell in cells)
{

if (cell.Contains("\r\n"))
{
break;
}
columnCount++;
}


}

基本上我所需要的只是“如果不在\”之间的分割,但我现在只是不知所措

任何提示或技巧将不胜感激

最佳答案

关于c# - 简单的csv阅读器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com