2013-05-24 5 views
2

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

Field A: 20 char 

Field B: 15 char 

Field C: 10 char 

Для следующих значений:

 
Field A     Field B     Field C 
Test 1     Test 2     Test 3 
This is value 1   This is value 2   This is va 

Плоские содержимое файла должны быть:

 
Test 1    Test 2   Test 3  
This is value 1  This is value 2This is va 

как тест-поля имеет 20 символов, включая пространство до поля Test 2 и то же, что и поле Test 2, имеют 15 символов до поля Test 3 и поле Test 3 также имеют 15 символов до конца, включая пробелы.

, пожалуйста, скажите мне решение для этого либо я хочу сгенерировать его из таблицы базы данных sql server, либо путем кодирования C# любым способом.

+0

Что вы пробовали? Отправьте свой код. Также см .: http://stackoverflow.com/faq#howtoask – cvraman

+0

Когда? Зачем? Где? Есть десятки возможных способов сделать это: от служб интеграции до пользовательского приложения C#. Powershell также может быть очень простым в использовании. –

ответ

1

Этот код показывает, как это сделать:

// 1 reading data from database 
var data = new List<Tuple<string, string, string>>(); 

for (var i = 0; i < 10; i++) 
{ 
    data.Add(new Tuple<string, string, string>(i.ToString(), (i + 1).ToString(), (i * 3000).ToString())); 
} 

// 2 writing data to file 
foreach (var record in data) 
{ 
    var str = string.Format("{0,-20}{1,-15}{2,-10}", record.Item1, record.Item2, record.Item3); 

    Console.WriteLine(str); // <- or file.WriteLine(...) 
} 

Поскольку я понятия не имею, каковы ваши модели (или домен) объекты, я использовал простой Tuple<string, string, string> вместо этого.

+1

Не изобретайте велосипед. Используйте библиотеку CSV! (Например: https://github.com/JoshClose/CsvHelper). –

+0

Спасибо @SteveB за это. Но в последний раз, когда я видел эту библиотеку (я думаю, более года назад, надеюсь, я не ошибаюсь), она не поддерживала колонки с фиксированной шириной. Теперь это изменилось? –

+0

@SteveB И если он поддерживает столбцы с фиксированной шириной, отправьте это как ответ. Это помогло бы другим, и это ваш ответ в любом случае! :) –