C# 如何使用C中的数据集将数据导出到对齐的.txt文件
我一直在尝试使用数据集将一些数据导出到一个完全类似网格的对齐.txt文件中。我想做的是5列和25列,但我不能让它在60列中工作。还有别的选择吗 我已经尝试将if与制表符一起使用,因为由于某些列的位数少于其他列,所以这些列没有对齐C# 如何使用C中的数据集将数据导出到对齐的.txt文件,c#,C#,我一直在尝试使用数据集将一些数据导出到一个完全类似网格的对齐.txt文件中。我想做的是5列和25列,但我不能让它在60列中工作。还有别的选择吗 我已经尝试将if与制表符一起使用,因为由于某些列的位数少于其他列,所以这些列没有对齐 DataTable mytable = new DataTable("mytable"); objDataAdaptermytable.Fill(mytable); var builder3 = new StringBuilder(); foreach (DataRow
DataTable mytable = new DataTable("mytable");
objDataAdaptermytable.Fill(mytable);
var builder3 = new StringBuilder();
foreach (DataRow row in mytable.Rows)
{
int count = row.ItemArray[2].ToString().Length;
int count2 = row.ItemArray[3].ToString().Length;
int count3 = row.ItemArray[4].ToString().Length;
int count4 = row.ItemArray[7].ToString().Length;
MessageBox.Show(count2.ToString());
if (count == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2])+ ";" + "\t" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[4], row.ItemArray[5], row.ItemArray[6], row.ItemArray[7], row.ItemArray[8], row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])));
if (count2 == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t"+ (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7], row.ItemArray[8], row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])));
if (count3 == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7], row.ItemArray[8], row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])));
if (count4==6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7]+";"+"\t"+"\t"+"\t"+ row.ItemArray[8]+";" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])))));
}
}
}
if (count2 == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7], row.ItemArray[8], row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])));
if (count3 == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7], row.ItemArray[8], row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])));
if (count4 == 6)
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray[0], row.ItemArray[1], row.ItemArray[2]) + ";" + "\t" + "\t" + row.ItemArray[3] + ";" + "\t" + "\t" + "\t" + row.ItemArray[4] + "; " + "\t" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[5], row.ItemArray[6], row.ItemArray[7] + ";" + "\t" + "\t" + "\t" + row.ItemArray[8] + ";" + "\t" + "\t" + (String.Join(";" + "\t" + "\t", row.ItemArray[9], row.ItemArray[10], row.ItemArray[11], row.ItemArray[12], row.ItemArray[13], row.ItemArray[14], row.ItemArray[15], row.ItemArray[16], row.ItemArray[17], row.ItemArray[18], row.ItemArray[19], row.ItemArray[20], row.ItemArray[21], row.ItemArray[22], row.ItemArray[23], row.ItemArray[24], row.ItemArray[25], row.ItemArray[26], row.ItemArray[27], row.ItemArray[28], row.ItemArray[29], row.ItemArray[30], row.ItemArray[31], row.ItemArray[32], row.ItemArray[33], row.ItemArray[34], row.ItemArray[35], row.ItemArray[36], row.ItemArray[37], row.ItemArray[38], row.ItemArray[39], row.ItemArray[40], row.ItemArray[41], row.ItemArray[42], row.ItemArray[43], row.ItemArray[44], row.ItemArray[45], row.ItemArray[46], row.ItemArray[47], row.ItemArray[48], row.ItemArray[49], row.ItemArray[50], row.ItemArray[51], row.ItemArray[52], row.ItemArray[53], row.ItemArray[54], row.ItemArray[55], row.ItemArray[56], row.ItemArray[57], row.ItemArray[58], row.ItemArray[59])))));
}
}
}
}
else
{
builder3.AppendLine(String.Join(";" + "\t" + "\t", row.ItemArray));
}
}
File.WriteAllText(@".\test.txt", builder3.ToString());
MessageBox.Show("Data exported");
cnn.Close();
}
我得到了一个部分allinged.txt,如下所示:
您不需要将其与tab对齐,而是需要填充值PadLeftint。在本例中,通过在左侧填充空格,以指定的总长度将字符右对齐
DataTable mytable = new DataTable("mytable");
objDataAdaptermytable.Fill(mytable);
var builder3 = new StringBuilder();
// find the longest occurring value for each column
int[] maxLengthPerColumn = new int[mytable.Columns.Count];
foreach (DataRow row in mytable.Rows) {
for (int column = 0; column < mytable.Columns.Count; column++) {
maxLengthPerColumn[column] = Math.Max(maxLengthPerColumn[column], row.ItemArray[column].ToString().Length);
}
}
string[] paddedValues = new string[mytable.Columns.Count];
foreach (DataRow row in mytable.Rows) {
for (int column = 0; column < mytable.Columns.Count; column++) {
// add spaces in front of the value to make it align nicely
paddedValues[column] = row.ItemArray[column].ToString().PadLeft(maxLengthPerColumn[column]);
}
builder3.AppendLine(string.Join(";", paddedValues));
}
File.WriteAllText(@".\test.txt", builder3.ToString());
MessageBox.Show("Data exported");
cnn.Close();
是否需要使用选项卡?如果是这样的话,如何确定制表符间距?不,不是。只需要将每一列的数据一个接一个地完美对齐即可。我的默认设置是每列两个选项卡,前一列数据有6位的3个选项卡。我的问题是,60列会变得杂乱无章,因此我正在寻找一种理想情况下不使用制表符对齐,但使用默认网格对齐的替代方法,我不关心间距有多大。看起来您只需要为整个数据集中的每列查找最长的数据值。然后你就知道了你可以创建列的最小宽度。你的意思是我应该为数据集的每一列计算长度,并根据最长的值确定我的制表符吗?