Как написать текстовый файл с фиксированной длиной на языке Си#
мне нужно записать данные в файл в указанной позиции с фиксированной длиной для каждого столбца с начальной позицией,конечной позицией и длиной столбца. не могли бы вы, пожалуйста, изменить мой код или предложить.Я дал длину выборки для каждого столбца
Column startposition endposotion Length 1 1 9 9 2 10 20 10 3 21 29 8 4 30 31 1 5 32 42 10
Вывод мне нужно было записать в текстовый файл как:
00000 2014-09-23 01:36:22 F 2014-09-23 000000 2014-09-23 01:36:22 F 2014-09-23 000000000 2014-09-23 01:36:22 F 2014-09-23
ниже приведен код, который я создал
string txt = string.Empty; DataTable employeeTable = new DataTable("Employee"); employeeTable.Rows.Add("00000", "2014-09-23", "01:36:22", "F", "2014-09-23"); employeeTable.Rows.Add("000000", "2014-09-23", "01:36:22", "F", "2014-09-23"); employeeTable.Rows.Add("000000000", "2014-09-23", "01:36:22", "F", "2014-09-23"); DataSet ds = new DataSet("Organization"); ds.Tables.Add(employeeTable); string filepath = Application.StartupPath + "\\" + "file.txt" ; StreamWriter sw = null; sw = new StreamWriter(filepath, false); foreach (DataRow row in ds.Tables[0].Rows) { foreach (var item in row.ItemArray) { //Add the Data rows. txt += item.ToString() + "\t"; } txt += "\r\n"; } sw.Write(txt); sw.Close();
Вывод, который я получаю из этого кода, есть, но это неправильно.
00000 2014-09-23 01:36:22 F 2014-09-23 000000 2014-09-23 01:36:22 F 2014-09-23 000000000 2014-09-23 01:36:22 F 2014-09-23
пожалуйста, исправьте мою проблему.
Что я уже пробовал:
string txt = string.Empty; DataTable employeeTable = new DataTable("Employee"); employeeTable.Rows.Add("00000", "2014-09-23", "01:36:22", "Falseis1", "2014-09-23", "01:36:22"); employeeTable.Rows.Add("000000", "2014-09-23", "01:36:22", "F", "2014-09-23", "01:36:22"); employeeTable.Rows.Add("000000000", "2014-09-23", "01:36:22", "F", "2014-09-23", "01:36:22"); DataSet ds = new DataSet("Organization"); ds.Tables.Add(employeeTable); string filepath = Application.StartupPath + "\\" + "file.txt" ; StreamWriter sw = null; sw = new StreamWriter(filepath, false); foreach (DataRow row in ds.Tables[0].Rows) { foreach (var item in row.ItemArray) { //Add the Data rows. txt += item.ToString() + "\t"; } txt += "\r\n"; } sw.Write(txt); sw.Close();
Sinisa Hajnal
Поскольку ваши столбцы имеют разную длину, вы не можете использовать табуляцию в качестве разделителя (разделитель фиксированной длины). Вместо этого определите самый длинный текст в каждом столбце и установите этот пробел + 1 (или любое другое количество пробелов, соответствующее вашему случаю). Вам нужно заполнить все остальные строки до этой максимальной длины + пробелы, а затем объединить их.
Vinodh Muthusamy
не могли бы вы изменить мой код
Richard MacCutchan
Должно быть очевидно, что вам нужно создать каждый текстовый элемент в поле фиксированной ширины. string.Format
Я помогу вам сделать это.