Пытаюсь вытащить из базы Аксеса запросом данные и воткнуть их в эксель, все русские символы превращаются в "ЛОЖЬ". С латиницей и цифрами всё норм. код: PHP: require_once 'classes/PHPExcel.php'; // Подключаем библиотеку PHPExcel $phpexcel = new PHPExcel(); // Создаём объект PHPExcel PHPExcel_Settings::setLocale('ru'); /* Каждый раз делаем активной 1-ю страницу и получаем её, потом записываем в неё данные */ $page = $phpexcel->setActiveSheetIndex(0); // Делаем активной первую страницу и получаем её $page->setCellValue("A1",'Сводный акт'); $page->mergeCells("A1:G1"); $page->setCellValue("A2","инвентаризации наземного оборудования УЭЦН собственности ТПП ПНГ"); $page->mergeCells("A2:G2"); $page->mergeCells("A3:G3"); $page->setCellValue("A3","по состоянию на 01.03.20 по УПО"); $page->setCellValue("A5","№ п/п"); $page->setCellValue("B5","Тип эл.оборудования"); $page->setCellValue("C5","Всего"); $page->setCellValue("D5","Новое"); $page->setCellValue("E5","Готовое после ремонта"); $page->setCellValue("F5","Рем.фонд"); $page->setCellValue("G5","Всего отдефектовано"); $page->setCellValue("A6","Станции управления"); $page->mergeCells("A6:G6"); $page->setTitle("01.03.2020"); // Заголовок делаем "01.03.2020" итог: Читал статьи, понял что проблема с кодировкой, но так и не понял как это исправить... Подскажите, если кто понимает что к чему.
Получилось, но теперь на самой страничке вот такая кракозябрина, что с этим делать? После перекодировки в ютф-8 без бом: До перекодировки были таблички и тд и тп)))
1. все ваши файлы в проекте желательно должны быть в одной кодировке 2. У страницы <meta charset=utf-8> ?
я честно говоря совершенно не силен в этом вопросе, да было ютф-8, убрал это а теперь еще и после серии преобразований кодировки текст просто преквратился в белиберду... что делать то теперь...
Восстановить из бекапп, он же есть? Преобразовывать надо не сериями, а с умом... Я не говорил что надо мета убирать, он нужен...
да, бэкап конечно есть, всё восстановил, вот теперь не понимаю как добиться искомого результата. как сделать с умом чтобы и результат получить и код и не загадить? Прошу прощения за свою недалекость
Итак, разобрался в проблеме и нашел решение. Опишу для тех кто ищет решение проблемы подобного плана. Если ваша база в Access то вы должны понимать что данные из запросов и вообще при чтении вы будете получать в кодировке Windows-1251, если база старая и наполнена (а у меня именно так), то поменять её кодировку вы не сможете чтобы не потерять данные и не накосячить со структурой. В то самое время PHPExcel пихает данные в файлик при записи в той кодировке в которой сделан ваш сайт, а сам файлик жаждет utf-8. От того ваши кириллические символы превратятся в кракозябры. Так как наполненная БД частенько бывает важнее чем обрабатывающие её инструменты, сайт надо будет делать с кодировкой базы, а значит нам надо перекодировать записи перед внесением их в экселевский файлик. Пример с введенным ручками текстом: PHP: $page->setCellValue("A1", mb_convert_encoding("Сводный акт","UTF-8" , "Windows-1251")); Пример с полученными из базы данными через запрос: PHP: $page->setCellValue("B".$hod, mb_convert_encoding(GetSQLfield($row, 'Тип оборудования'),"UTF-8" , "Windows-1251"));