Мне нужно скопировать и вставить excel в форму и извлечь каждое значение, и, поскольку оно разделено вкладками, я делаю что-то вроде:
var lines = PasteText.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
foreach (var currLine in lines.Where(x => !String.IsNullOrWhiteSpace(x)))
{
var items = currLine.Split(new string[] { "\t", " " }, StringSplitOptions.RemoveEmptyEntries)
.Take(15).ToArray();
}
Но проблема возникает, если в одном из полей столбца есть вкладка.
Как я мог решить эту проблему?
Если в поле столбца есть вкладка, это означает, что есть два последовательных пустых поля. Вам следует использовать не RemoveEmptyEntries, а None. В противном случае вы можете получить разную длину поля в каждой строке.
@AlexK. обновил код, если я не могу использовать вкладку в качестве разделителя, как я могу выполнить синтаксический анализ Excel?
@TimSchmelter говорит, что это какой-то текст вроде "text <tab> moretext"
@JoeViscardi: тогда тебе стоит пожаловаться на парня, который сказал, что табуляция является разделителем, очевидно, что это не так. Если это действительно так, то CSV поврежден и не может быть прочитан. Вы (или ответственный) должны попытаться исправить рут, так где он сгенерирован.
@TimSchmelter есть ли истинный разделитель, если вы копируете из файла excel?
@JoeViscardi: я не понимаю этого вопроса.
Если ваше приложение взаимодействует с excel путем копирования данных из буфера обмена, тогда да, оно может потерять информацию о разделителях, когда вы прочитаете это обратно, поскольку табуляция используется по умолчанию и не учитывает вкладки в ячейках. Взаимодействие с Office позволит вам читать диапазоны напрямую по индексу строки / столбца, что вам, вероятно, следует делать.
извините, у @TimSchmelter была опечатка, я имел в виду, есть ли какой-нибудь * истинный разделитель, если он копируется из файла excel





Хорошо, если внутри столбца есть вкладка, тогда вкладка не может быть истинным разделителем, в первую очередь, откуда взялась currLine?