|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
Добрый день. Необходимо открывать CSV файлы (генерируются как отчеты из БД) в Экселе. Вопрос в том, что в разных версиях Экселя (проверено на 2000, 2003 и 2010 Офисах) в качестве символа-разделителя по-умолчанию используется разный символ. Как узнать для Экселя из Офиса XXXX какой у него символ-разделитель по-умолчанию? Скриптом, макросом - без разницы. Главное программным путем. Не похоже что он берет его из локальных настроек. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 10:34 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
Переименуйте файлы, чтобы у них было расширение ".TXT", и попробуйте пооткрывать... Думаю, вы поймёте, откуда берутся различные разделители :) Потому что версия Офиса здесь как бы совсем ни при чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 11:55 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
AndreTM, Ну так открой тайну, Мастер!) Что здесь причем? По поводу переименования файлов - вопрос не в том как их открыть, вопрос в том как их открывать без лишних вопросов в разных версиях Офиса ? PS В 2000 Экселе по-умолчанию символ-разделитель "," (запятая), в 2003 - ";" (точка с запятой). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 12:16 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
luigi, Покажите, как открываете файл CSV кодом. Установка параметра Local в True может быть подойдет в Вашем случае: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 12:24 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
The_Prist, я не открываю файл кодом (по крайней мере пока), я пытаюсь открыть его Экселем. Есть приложение, которое генерит отчеты из БД в CSV формате. Каждый раз при переходе на новую версию Офиса нужно править настройки приложения для указания другого символа-разделителя. При этом версий Офиса может сосуществовать несколько. Есть возможность при генерации отчета указать в качестве дополнительной обработки свою процедуру. Стоит задача - при генерации отчета выяснять какая версия Офиса установлена в системе и указать для нее соответствующий символ-разделитель. Т.е. нужна скорее информация от самой Микрософт, если таковая существует: 2000 = , 2003 = ; 2010 = ? а в последующих версиях? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 15:40 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
Как это в 2000 разделитель - запятая? А десятичные тогда чем отделяются? Может, вы всё же путаете, и у вас просто 2000-й - нелокализованный? (Мы) Я пытаюсь вам сказать, что не надо полагаться на некие установленные настройки (офиса, ОС, приложения и т.д.) - надо настроить формат обмена и следовать ему. То есть должен существовать утверждённый протокол, описывающий все нюансы: разделители полей, десятичной точки, разрядов, символьных строк, формат дат, числовых значений с плавающей запятой, маскирующих символов... "Приложение" генерирует текстовый файл в утвержденном формате. Excel не обязан "уметь открывать" этот файл - а для него тоже должна существовать процедура/надстройка, позволяющая правильно импортировать данные из текста. Если же вы всё же следуете "своему корпоративному духу пофигизма", т.е. требуете, чтобы "некий текст всегда 'правильно открывался' в некоем Excel"... ну, продолжайте. До первого залетевшего дятла... Впрочем, вы уже этого дятла увидели ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 16:11 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
AndreTM, Уважаемый, ваш хрустальный шар смотрит не в ту сторону. Поменьше смеха и побольше разума. Во-первых, где вы увидели, что речь в отчетах идет о числах?? Не надо "думать" за меня. Надо четко ответить на вопрос, если конечно знаете. Нет, проходите мимо. AndreTMExcel не обязан "уметь открывать" этот файл - а для него тоже должна существовать процедура/надстройка, позволяющая правильно импортировать данные из текста. Я спрашивал именно об этом. Что должно быть в этой процедуре для определения символа-разделителя в Офисе ХХХХ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 09:19 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
автора в последующих версиях? - Вы задаёте вопрос не там :) Наилучшее решение вижу в генерации родного файла xls, который везде откроется одинаково. Как вариант генерация txt. При его открытии открытии Excel спрашивает о разделителе. (в 2002 точно) Ещё вариант изготовление надстройки Excel для открытия именно вашего отчёта. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 10:45 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
Уважаемый, это вы смОтрите не в том направлении... Если используем отдельную процедуру для импорта данных ( пример ) - то ей без разницы, что там для Офиса является символом-разделителем. Ей принципиально, какой символ использован в CSV-файле при генерации экспортирующим приложением. А этот символ вы знаете, он используется приложением. Если используем промежуточную процедуру (после генерации, но до импорта, но не импортирующую, т.е. обрабатывающую только сам текстовый файл) - то там всё просто (как вам и показали выше): - создать экземпляр Excel, например, через CreateObject() - открыть в нем файл через Workbooks.OpenText DataType:=xlDelimited , используя Tab, Semicolon, Comma, Space, Other, OtherChar - в зависимости от того, что у вас установлено при экспорте - записать (обратно или в другой файл) через ActiveWorkbook.SaveAs FileFormat:=xlCSV Определять разделитель просто не потребуется - при сохранении он будет подставлен автоматически. Другое дело, если формат ваших данных окажется несовместим с текущим разделителем... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 11:07 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
авторНадо четко ответить на вопрос Ух ты...Вы не военный случаем? авторЧто должно быть в этой процедуре для определения символа-разделителя Я Вам дал код, в котором все написано с определением всего, что нужно. Но Вы жеавторне открываю файл кодом ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 13:00 |
|
Символ-разделитель в Excel разных версий
|
|||
---|---|---|---|
#18+
AndreTMЕсли используем отдельную процедуру для импорта данных (пример) - то ей без разницы, что там для Офиса является символом-разделителем. Правильно. AndreTMЕй принципиально, какой символ использован в CSV-файле при генерации экспортирующим приложением. А этот символ вы знаете, он используется приложением. Абсолютно верно. AndreTMЕсли используем промежуточную процедуру (после генерации, но до импорта, но не импортирующую, т.е. обрабатывающую только сам текстовый файл) - то там всё просто (как вам и показали выше): - создать экземпляр Excel, например, через CreateObject() - открыть в нем файл через Workbooks.OpenText DataType:=xlDelimited , используя Tab, Semicolon, Comma, Space, Other, OtherChar - в зависимости от того, что у вас установлено при экспорте - записать (обратно или в другой файл) через ActiveWorkbook.SaveAs FileFormat:=xlCSV Вот об этой последовательности действий и спрашивал. Спасибо за терпение и развернутый ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2014, 11:08 |
|
|
start [/forum/topic.php?fid=61&msg=38541812&tid=2174276]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 491ms |
0 / 0 |