C # Как перехватить пустые строки в файле CSV с помощью CSVReader? - PullRequest
1 голос
/ 26 января 2009

Я использую C # 2005 и класс CSVreader, все работает хорошо, кроме случаев, когда файл CSV содержит пустую строку в конце:

Пример:

1,2,3,4,5
2,3,5,6,7
,,,,

Мои программные ошибки, так как здесь нет значений, проблема в том, что не все столбцы содержат значение, поэтому 2 строки ниже будут действительными.

1,2,,4,5
2,,5,6,7

но пустая строка, содержащая ,,,, не будет. Последнее препятствие - я не знаю точно, сколько будет столбцов.

Как бы вы предложили мне проверить пустую строку?

Ответы [ 4 ]

2 голосов
/ 26 января 2009

Этот конкретный CSVReader выглядит неплохо для обработки пропущенных полей:

Быстрый считыватель CSV

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

csv.MissingFieldAction = MissingFieldAction.ReplaceByNull;

или заменить на пустую строку:

csv.MissingFieldAction = MissingFieldAction.ReplaceByEmpty;

Тогда вы можете проверить пустую строку, пройдя по ней циклом после чтения, и, если какой-либо столбец не равен NULL, обработайте строку.

0 голосов
/ 26 октября 2015

Это был вопрос давным-давно, но этот вопрос все еще возник у меня. Если вы используете CSVHelper, доступный для .NET C # в NuGet (), вы можете использовать этот код, чтобы пропустить пустые значения:

 SoupToNuts record; //class with same columns found in csv file
 List<SoupToNuts> SoupToNutsList = new List<SoupToNuts>(); 

 while (csv.Read())
 {
      if (!csv.IsRecordEmpty())
      {
          record = csv.GetRecord<SoupToNuts>();
          SoupToNutsList.Add(record);
      }
 }
0 голосов
/ 26 января 2009

То, как я сталкивался с подобной проблемой в прошлом, - это использование читателя между вашим CSV-ридером и реальным потоком / строкой, из которой вы читаете. Используйте промежуточное звено, чтобы убрать мусор и проверить наличие дополнительных строк и т. Д., Чтобы предотвратить ужасную смерть читателя при вводе, что плохо.

Конечно, если память не является проблемой, тогда вы можете просто прочитать всю строку, исправить ее один раз, а затем вставить ее в свой считыватель.

0 голосов
/ 26 января 2009

Прочитайте всю строку и вернитесь назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...