Vinodh Muthusamy Ответов: 2

Как изменить формат csv на число в C#


Я разработал приложение для записи в формате .csv. Мне нужно изменить формат на номер файла .csv для всех столбцов по умолчанию.

Пожалуйста, помогите мне, как изменить формат на номер. Мне нужен вывод в следующем формате.

например:

USER        	Active
0168	        0124341156
0168	        0124341156
0168	        0124341156


Но я получаю вывод как

USER        	Active
168	        124341156
168	        124341156
168	        124341156


Поэтому, чтобы получить вывод в правильном формате, мне нужно изменить его как числовой формат. Так что я могу получить "0" в начале числа.


var lines = new List<string>();
string[] columnNames = ldatatables.Exportdatatable.Columns.Cast<DataColumn>().
                                         Select(column => column.ColumnName).
                                         ToArray();
var header = string.Join(",", columnNames);
lines.Add(header);
var valueLines = ldatatables.Exportdatatable.AsEnumerable()
                  .Select(row => string.Join(",", row.ItemArray));
lines.AddRange(valueLines);
File.WriteAllLines("Test.csv", lines);


Что я уже пробовал:

var lines = new List<string>();
string[] columnNames = ldatatables.Exportdatatable.Columns.Cast<DataColumn>().
                                         Select(column => column.ColumnName).
                                         ToArray();
var header = string.Join(",", columnNames);
lines.Add(header);
var valueLines = ldatatables.Exportdatatable.AsEnumerable()
                  .Select(row => string.Join(",", row.ItemArray));
lines.AddRange(valueLines);
File.WriteAllLines("Test.csv", lines);

Richard MacCutchan

Что вы имеете в виду под этим "как изменить формат на число"- Изменить какой формат?

Vinodh Muthusamy

я обновил пример, пожалуйста, просмотрите их еще раз

Richard MacCutchan

Если вы создаете файл .csv, то начальные нули ничего не значат.

Vinodh Muthusamy

мне нужно, чтобы были включены ведущие нули..

Richard MacCutchan

Почему? В csv-файле они не имеют никакого смысла и не служат никакой цели. Ведущие нули нужны только тогда, когда вы представляете данные пользователю, на экране или в печатных отчетах.

2 Ответов

Рейтинг:
1

Maciej Los

Как OriginalGriff[^] уже упоминалось, что нет стандартного способа достичь этого, но... вы на правильном пути!

Предполагая, что USER и Active поля имеют тип целого числа, и вы хотите добавить начальные нули, вы должны изменить свой тип поля. Select заявление к:

var valueLines =  dt.AsEnumerable()
					.Select(row =>
						string.Concat( 
							row.Field<int>("USER").ToString("0000"),
							",",
							row.Field<int>("Active").ToString("0000000000"))
					).ToList();


Удачи вам!


Рейтинг:
0

OriginalGriff

Нет стандартного способа сделать это, и это было бы не тривиально сделать в любом случае с yoru scheme - вы не можете просто предположить, что данные будут числовыми, и использовать переопределение ToString с "ведущим нулевым форматом", потому что это не будет работать для нечисловых элементов в вашей строке.

И даже если все элементы являются числами, все равно невозможно выбрать вашу схему, потому что количество цифр, которое вы хотите получить в выходных данных, не одинаково для всех строк., и вам нужен другой формат для каждой из них.
Хотя это можно обойти с помощью массива строк формата, это грязное решение.

Честно говоря, вам, вероятно, вообще не стоит этого делать: ведущие нули-это функция презентации, а не функция хранения данных, и на самом деле они должны применяться программным обеспечением, которое читает CSV-файл и отображает его, а не хранится в самом файле данных.