При вставке в Ексель некоторые поля смещаются вправо.

zenno60

Пользователь
Регистрация
09.05.2016
Сообщения
99
Благодарностей
1
Баллы
8
Проект выполняет парсинг.
При вставке в Ексель некоторые поля смещаются вправо.

В чём может быть проблема?
Прилагаю Ексель файл
 

Вложения

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
Вероятно, при записи какого-либо значения, оно содержит символ разделителя столбцов, поэтому и происходят сдвиги.
 
  • Спасибо
Реакции: zenno60

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Код:
string result = project.Variables["productName"].Value.Trim();
return Macros.TextProcessing.Replace(result, "\t", "", "Regex", "All");
Вот так можно почистить переменную от табов.
 
  • Спасибо
Реакции: zenno60

zenno60

Пользователь
Регистрация
09.05.2016
Сообщения
99
Благодарностей
1
Баллы
8
Вероятно, при записи какого-либо значения, оно содержит символ разделителя столбцов, поэтому и происходят сдвиги.
Привожу текст, который "разбрасывает" по нескольким полям.
декабрь 2017 – настоящее время Маркетолог. УП «ПС АВТО ГРУПП». ноябрь 2016 – декабрь 2017 гг. Индивидуальный предприниматель.май 2015 – май 2016 гг. Служба в армии. в/ч 5448 г. Минск.июль 2013 – май 2015 гг. Экономист по маркетингу и сбыту. Государственное предприятие «Хлебозавод №1 г. Минска».

Может ли это прояснить в чём может быть причина?
 

zenno60

Пользователь
Регистрация
09.05.2016
Сообщения
99
Благодарностей
1
Баллы
8
Дублирую, а то вроде редактор форума немного изменил формат.
Прилагаю файл
 

Вложения

  • 348 байт Просмотры: 462

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
  • Спасибо
Реакции: zenno60 и Severip

zenno60

Пользователь
Регистрация
09.05.2016
Сообщения
99
Благодарностей
1
Баллы
8
Код:
string result = project.Variables["productName"].Value.Trim();
return Macros.TextProcessing.Replace(result, "\t", "", "Regex", "All");
Вот так можно почистить переменную от табов.
Сделал как на скрине.
С настройки "Не возвращать значение" убирать галку?


Исходный текст, который находится в переменной "pl_work_history":
"
декабрь 2017 – настоящее время Маркетолог. УП «ПС АВТО ГРУПП». ноябрь 2016 – декабрь 2017 гг. Индивидуальный предприниматель.май 2015 – май 2016 гг. Служба в армии. в/ч 5448 г. Минск.июль 2013 – май 2015 гг. Экономист по маркетингу и сбыту. Государственное предприятие «Хлебозавод №1 г. Минска».

"

С настройки "Не возвращать значение" убрал галку.
"Положить результат в переменную" "pl_work_history".
После выполнения кода в переменной "pl_work_history":
"
декабрь 2017 – настоящее времяМаркетолог. УП «ПС АВТО ГРУПП». ноябрь 2016 – декабрь 2017 гг.Индивидуальный предприниматель.май 2015 – май 2016 гг.Служба в армии. в/ч 5448 г. Минск.июль 2013 – май 2015 гг.Экономист по маркетингу и сбыту. Государственное предприятие «Хлебозавод №1 г. Минска».
"

При вставке в Ексель всё равно "разбрасывает" текст по нескольким полям.

1. Я правильно сделал?
2. Если проблема не решилась, может есть какие-нибудь нюансы?
3. С настройки "Не возвращать значение" убирать галку?
 

Вложения

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Код:
string result = project.Variables["pl_work_history"].Value.Trim();
return Macros.TextProcessing.Replace(result, "\t", " ", "Regex", "All");
Галку убирать надо, оно перезапишет переменную pl_work_history, ее нужно также указать внизу.
В данном коде вместо таба поставит пробел, т.е. заменить все разделители столбца на пробел и сдвига ячеек не будет.
 
  • Спасибо
Реакции: zenno60

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
В смысле галки не должно быть - значение нужно вернуть!
 

zenno60

Пользователь
Регистрация
09.05.2016
Сообщения
99
Благодарностей
1
Баллы
8
Код:
string result = project.Variables["pl_work_history"].Value.Trim();
return Macros.TextProcessing.Replace(result, "\t", " ", "Regex", "All");
Галку убирать надо, оно перезапишет переменную pl_work_history, ее нужно также указать внизу.
В данном коде вместо таба поставит пробел, т.е. заменить все разделители столбца на пробел и сдвига ячеек не будет.
Кажись работает.

А как это:
- &ndash
- &laquo
- &raquo
грамотно удалить?

Единственно, что мне приходит в голову это для каждого тега сделать "найти - заменить".
Не хотелось бы для каждого делать кубик.
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Код:
string result = project.Variables["pl_work_history"].Value.Trim();
result = Macros.TextProcessing.Replace(result, "&ndash", " ", "Text", "All");
result = Macros.TextProcessing.Replace(result, "&laquo", " ", "Text", "All");
result = Macros.TextProcessing.Replace(result, "&raquo", " ", "Text", "All");
result = Macros.TextProcessing.Replace(result, "\t", " ", "Regex", "All");
result = Macros.TextProcessing.Replace(result, "\\s+", " ", "Regex", "All"); // Замена нескольких пробелов идущих подряд на один - убивает переносы строк
return result.Trim();
Галку не ставим, должно вернуть новое значение в pl_work_history.
 
  • Спасибо
Реакции: zenno60

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
По аналогии можно заменять разный мусор на пустоту или пробелы просто добавляя строки.
Для строк с параметром Regex в первых кавычках нужно указывать регулярное выражение, с параметром Text - просто текст для замены.
 
  • Спасибо
Реакции: zenno60

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)