Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Символ-разделитель в Excel разных версий / 11 сообщений из 11, страница 1 из 1
29.01.2014, 10:34
    #38541621
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
Добрый день.
Необходимо открывать CSV файлы (генерируются как отчеты из БД) в Экселе. Вопрос в том, что в разных версиях Экселя (проверено на 2000, 2003 и 2010 Офисах) в качестве символа-разделителя по-умолчанию используется разный символ. Как узнать для Экселя из Офиса XXXX какой у него символ-разделитель по-умолчанию? Скриптом, макросом - без разницы. Главное программным путем.

Не похоже что он берет его из локальных настроек.
...
Рейтинг: 0 / 0
29.01.2014, 11:55
    #38541812
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
Переименуйте файлы, чтобы у них было расширение ".TXT", и попробуйте пооткрывать...
Думаю, вы поймёте, откуда берутся различные разделители :)
Потому что версия Офиса здесь как бы совсем ни при чём.
...
Рейтинг: 0 / 0
29.01.2014, 12:16
    #38541852
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
AndreTM,

Ну так открой тайну, Мастер!) Что здесь причем?
По поводу переименования файлов - вопрос не в том как их открыть, вопрос в том как их открывать без лишних вопросов в разных версиях Офиса ?

PS В 2000 Экселе по-умолчанию символ-разделитель "," (запятая), в 2003 - ";" (точка с запятой).
...
Рейтинг: 0 / 0
29.01.2014, 12:24
    #38541866
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
luigi,

Покажите, как открываете файл CSV кодом. Установка параметра Local в True может быть подойдет в Вашем случае:
Код: vbnet
1.
Workbooks.OpenText "filename", True, , , , , , , , , , , , , , , , True
...
Рейтинг: 0 / 0
29.01.2014, 15:40
    #38542265
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
The_Prist,

я не открываю файл кодом (по крайней мере пока), я пытаюсь открыть его Экселем.
Есть приложение, которое генерит отчеты из БД в CSV формате. Каждый раз при переходе на новую версию Офиса нужно править настройки приложения для указания другого символа-разделителя. При этом версий Офиса может сосуществовать несколько.
Есть возможность при генерации отчета указать в качестве дополнительной обработки свою процедуру. Стоит задача - при генерации отчета выяснять какая версия Офиса установлена в системе и указать для нее соответствующий символ-разделитель. Т.е. нужна скорее информация от самой Микрософт, если таковая существует:
2000 = ,
2003 = ;
2010 = ?

а в последующих версиях?
...
Рейтинг: 0 / 0
29.01.2014, 16:11
    #38542324
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
Как это в 2000 разделитель - запятая? А десятичные тогда чем отделяются? Может, вы всё же путаете, и у вас просто 2000-й - нелокализованный?

(Мы) Я пытаюсь вам сказать, что не надо полагаться на некие установленные настройки (офиса, ОС, приложения и т.д.) - надо настроить формат обмена и следовать ему. То есть должен существовать утверждённый протокол, описывающий все нюансы: разделители полей, десятичной точки, разрядов, символьных строк, формат дат, числовых значений с плавающей запятой, маскирующих символов... "Приложение" генерирует текстовый файл в утвержденном формате. Excel не обязан "уметь открывать" этот файл - а для него тоже должна существовать процедура/надстройка, позволяющая правильно импортировать данные из текста.
Если же вы всё же следуете "своему корпоративному духу пофигизма", т.е. требуете, чтобы "некий текст всегда 'правильно открывался' в некоем Excel"... ну, продолжайте. До первого залетевшего дятла... Впрочем, вы уже этого дятла увидели
...
Рейтинг: 0 / 0
30.01.2014, 09:19
    #38543075
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
AndreTM,

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

AndreTMExcel не обязан "уметь открывать" этот файл - а для него тоже должна существовать процедура/надстройка, позволяющая правильно импортировать данные из текста.

Я спрашивал именно об этом. Что должно быть в этой процедуре для определения символа-разделителя в Офисе ХХХХ ?
...
Рейтинг: 0 / 0
30.01.2014, 10:45
    #38543195
_Дмит_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
автора в последующих версиях?
- Вы задаёте вопрос не там :)

Наилучшее решение вижу в генерации родного файла xls, который везде откроется одинаково.
Как вариант генерация txt. При его открытии открытии Excel спрашивает о разделителе. (в 2002 точно)
Ещё вариант изготовление надстройки Excel для открытия именно вашего отчёта.
...
Рейтинг: 0 / 0
30.01.2014, 11:07
    #38543243
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
Уважаемый, это вы смОтрите не в том направлении...

Если используем отдельную процедуру для импорта данных ( пример ) - то ей без разницы, что там для Офиса является символом-разделителем. Ей принципиально, какой символ использован в CSV-файле при генерации экспортирующим приложением. А этот символ вы знаете, он используется приложением.

Если используем промежуточную процедуру (после генерации, но до импорта, но не импортирующую, т.е. обрабатывающую только сам текстовый файл) - то там всё просто (как вам и показали выше):
- создать экземпляр Excel, например, через CreateObject()
- открыть в нем файл через Workbooks.OpenText DataType:=xlDelimited , используя Tab, Semicolon, Comma, Space, Other, OtherChar - в зависимости от того, что у вас установлено при экспорте
- записать (обратно или в другой файл) через ActiveWorkbook.SaveAs FileFormat:=xlCSV
Определять разделитель просто не потребуется - при сохранении он будет подставлен автоматически. Другое дело, если формат ваших данных окажется несовместим с текущим разделителем...
...
Рейтинг: 0 / 0
30.01.2014, 13:00
    #38543466
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
авторНадо четко ответить на вопрос
Ух ты...Вы не военный случаем?
авторЧто должно быть в этой процедуре для определения символа-разделителя
Я Вам дал код, в котором все написано с определением всего, что нужно. Но Вы жеавторне открываю файл кодом
...
Рейтинг: 0 / 0
31.01.2014, 11:08
    #38544668
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Символ-разделитель в Excel разных версий
AndreTMЕсли используем отдельную процедуру для импорта данных (пример) - то ей без разницы, что там для Офиса является символом-разделителем.
Правильно.

AndreTMЕй принципиально, какой символ использован в CSV-файле при генерации экспортирующим приложением. А этот символ вы знаете, он используется приложением.
Абсолютно верно.

AndreTMЕсли используем промежуточную процедуру (после генерации, но до импорта, но не импортирующую, т.е. обрабатывающую только сам текстовый файл) - то там всё просто (как вам и показали выше):
- создать экземпляр Excel, например, через CreateObject()
- открыть в нем файл через Workbooks.OpenText DataType:=xlDelimited , используя Tab, Semicolon, Comma, Space, Other, OtherChar - в зависимости от того, что у вас установлено при экспорте
- записать (обратно или в другой файл) через ActiveWorkbook.SaveAs FileFormat:=xlCSV

Вот об этой последовательности действий и спрашивал.
Спасибо за терпение и развернутый ответ.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Символ-разделитель в Excel разных версий / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]