AM读取.tsv文件,该文件具有约3500列和1000行,当我向数据表中添加行时,行已成功添加到数据表中(我看到datatable.Rows.Count正在增加),但是数据表未显示任何数据。我已经推荐了多篇文章,仍然看到同样的问题,任何建议对我都有帮助
static void Main(string[] args)
{
DataTable datatable = new DataTable();
StreamReader streamreader = new StreamReader(@"C:\Users\Latest PM File.tsv");
char[] delimiter = new char[] { '\t' };
string[] columnheaders = streamreader.ReadLine().Split(delimiter);
foreach (string columnheader in columnheaders)
{
datatable.Columns.Add(columnheader); // I've added the column headers here.
}
while (streamreader.Peek() > 0)
{
DataRow datarow = datatable.NewRow();
datarow.ItemArray = streamreader.ReadLine().Split(delimiter);
datatable.Rows.Add(datarow);
}
}
答案 0 :(得分:1)
针对您对我的其他答案的评论:
您的TSV包含5735列。我的数据集可视化器在655列后停止(崩溃?)。数据在那里;可以在立即窗口中看到它:
此屏幕截图的注意事项:
hdr
变量进一步观察:
您发布的测试文件似乎不包含超过57列的数据。如果对于整个文件都是如此,则可能需要进行一些数据修复。观察到,列标题列表包含重复项;如果数据被扭曲成对角表示(为应该在现有列中的数据添加了新列),则可能需要付出更多努力才能将其恢复为最小列数。包含将近6000列的数据表将是查询工作的全部难题
答案 1 :(得分:0)
如果有帮助,我无法重现您的问题:
此简化版本也不会(不将第一行作为标题):
这是我使用的稍微简单的代码:
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
for (int i = 0; i < 3; i++)
dt.Columns.Add("col" + i);
foreach (var line in File.ReadAllLines(@"C:\temp\a.tsv"))
dt.Rows.Add(line.Split('\t'));
int c = dt.Rows.Count; //not necessary, just makes for an easy place to put a breakpoint
}
}
想知道如果逐字粘贴会得到什么结果。也许您的数据集可视化器已损坏(重新启动VS?)
尝试在“立即窗口”中输入以下内容:
?datatable.Rows[0].ItemArray
您应该看到以文本形式呈现的数组:
如果是,请继续进行编码;数据表中包含的数据只是您的可视化器由于某种原因未显示。
ps;我进入可视化器,方法是指向“数据表”,然后单击工具提示中的放大镜