Работаю над экспортёром данных с сайта в xlsx-формат (серверный язык - PHP). И возникла загвоздка. Требуется экспортировать таблицу: по бокам и сверху таблицы данные в общем (текстовом) формате, а по центру ячейки в числовом формате. Требуемые классы, отвечающие за формат, передаются корректно. Но всё равно все ячейки выводятся как текст. То есть все данные пишутся в SharedStrings.xml, вместо того чтобы разделять данные на запись в SharedString.xml SheetN.xml, хотя у меня и стоит условие для чередования. Если указываю для всех ячеек класс формата как число, отрабатывает корректно. То есть Excel почему-то, невзирая на прямые указания записи в конкретный файл, приводит все ячейки к одному виду. Подскажите, пожалуйста, можно ли прописать какую-нибудь настройку в конкретном файле для отмены действия по умолчанию, чтобы Excel не форматировал на автомате?
Буду очень признателен за помощь.
Здравствуйте.
Работаю над экспортёром данных с сайта в xlsx-формат (серверный язык - PHP). И возникла загвоздка. Требуется экспортировать таблицу: по бокам и сверху таблицы данные в общем (текстовом) формате, а по центру ячейки в числовом формате. Требуемые классы, отвечающие за формат, передаются корректно. Но всё равно все ячейки выводятся как текст. То есть все данные пишутся в SharedStrings.xml, вместо того чтобы разделять данные на запись в SharedString.xml SheetN.xml, хотя у меня и стоит условие для чередования. Если указываю для всех ячеек класс формата как число, отрабатывает корректно. То есть Excel почему-то, невзирая на прямые указания записи в конкретный файл, приводит все ячейки к одному виду. Подскажите, пожалуйста, можно ли прописать какую-нибудь настройку в конкретном файле для отмены действия по умолчанию, чтобы Excel не форматировал на автомате?
если так сделать 1)создаете файл xlsx и делаете в нем нужные форматы ячеек. 2) этот файл используете как шаблон 3)копируете данные из другой программы(или откуда вы копируете) в этот шаблон,а не в новый файл есть у вас возможность вставлять данные в имеющийся файл,а не в новый?
если так сделать 1)создаете файл xlsx и делаете в нем нужные форматы ячеек. 2) этот файл используете как шаблон 3)копируете данные из другой программы(или откуда вы копируете) в этот шаблон,а не в новый файл есть у вас возможность вставлять данные в имеющийся файл,а не в новый?Karataev
спасибо за ответ. Только, к сожалению, такой вариант не подходит. Потому как данные экспортируются самые разнообразные и единый шаблон здесь не подойдёт. Буду ещё искать варианты.
Karataev,
спасибо за ответ. Только, к сожалению, такой вариант не подходит. Потому как данные экспортируются самые разнообразные и единый шаблон здесь не подойдёт. Буду ещё искать варианты.av1984
Я так понимаю вы программно вставляете в Excel данные. Просто указывайте тип для области однотипных ячеек, или одной ячейки перед вставкой.
Программный код можно посмотреть в записанном макросе, правда его нужно будет адаптировать для вашего средства программирования. Когда я делал на делфи утилитку, то записывал макрос и использовал в ней его код и все отлично работало. Например для текстовой области ячеек:
Не вдаваясь в подробности в Делфи у меня выглядит так:
Otchet.Range['G15:M20'].NumberFormat = '@';
Otchet - переменная типа вариант, ей я присваивал лист ексэля, для удобства обращения. Для числового формата вместо "@" будет "0.00"
av1984,
Я так понимаю вы программно вставляете в Excel данные. Просто указывайте тип для области однотипных ячеек, или одной ячейки перед вставкой.
Программный код можно посмотреть в записанном макросе, правда его нужно будет адаптировать для вашего средства программирования. Когда я делал на делфи утилитку, то записывал макрос и использовал в ней его код и все отлично работало. Например для текстовой области ячеек:
В русской локали обычно десятичный разделитель "запятая", а все числа с разделителем "точка" - текст (если не преобразуются в дату). Выгружайте нужный тип данных.
В русской локали обычно десятичный разделитель "запятая", а все числа с разделителем "точка" - текст (если не преобразуются в дату). Выгружайте нужный тип данных.RAN