1
我需要将多个文本文件导入到相同的datatable
。我正在使用多选设置为true的openfiledialog
。选择只有一个文件时,我得到了这个工作,但要求是选择许多文本文件。我怎样才能做到这一点?这是创建datatable
功能:Winforms - 将多个文本文件导入同一个数据表
public static DataTable DataTableFromTextFile(string[] data)
{
DataTable result;
result = FormDataTable(data);
return result;
}
private static DataTable FormDataTable(string[] LineArray)
{
DataTable dt = new DataTable();
AddColumnToTable(LineArray, ref dt);
AddRowToTable(LineArray, ref dt);
return dt;
}
private static void AddRowToTable(string[] valueCollection, ref DataTable dt)
{
for (int i = 0; i < valueCollection.Length; i++)
{
string[] values = valueCollection[i].Split(new[] { "|" }, 5, StringSplitOptions.RemoveEmptyEntries);
string[] col1 = values[0].Split(new[] { ":" }, 3, StringSplitOptions.RemoveEmptyEntries);
int count = values.Length;
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
}
private static void AddColumnToTable(string[] columnCollection, ref DataTable dt)
{
string[] columns = columnCollection[0].Split(new[] { "|" }, 5, StringSplitOptions.RemoveEmptyEntries);
string[] col1 = columns[0].Split(new[] { ":" }, 3, StringSplitOptions.RemoveEmptyEntries);
string[] names = { "a", "b", "c", "d", "e", "f", "g" };
for(int i = 0; i < columns.Count() + col1.Count(); i++)
{
DataColumn dc = new DataColumn(names[i], typeof(string));
dt.Columns.Add(dc);
}
}
中的所有文本文件具有相同的格式。我将数据从一个文本文件加载到数组中,然后调用此函数以在构造函数中使用数组创建datatable
。有人可以告诉我如何用多个文本文件完成相同的事情。如果您需要更多信息,请告诉我。我对此有点新鲜!
谢谢!
你在哪里阅读文件? 'DataTableFromTextFile'做什么不能被FormDataTable处理?你真的需要在这里使用'ref'吗? (我不认为默认情况下DataTables是按值传递的)。如果你输入一个多维数组而不是一维的,你可能会更好地设计,如果你输入一个多维数组而不是以后分割的一维,这样你就可以假设后面的分割字符串符合你的格式 – Kartoffel
除了每个文件之外,你在做什么。 [文档](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.openfiledialog.multiselect?view=netframework-4.7#System_Windows_Forms_OpenFileDialog_Multiselect)有一个如何访问所有选定内容的示例文件。 – Crowcoder