Чтение Excel из PHP

👁 53 просмотров

PHPExcel – библиотека, предназначенная для обработки данных формата MS Excel. С её помощью можно производить чтение и запись информации в файлы, форматировать их содержимое, выполнять операции с формулами, стилями и т.д.
Для работы PHPExcel требуется версия PHP 5.2 или выше, а так же наличие подключенных расширений ZIP, XML и GD2.
Примечание: расширение php_zip нужно только при использовании классов PHPExcel_Reader_Excel2007, PHPExcel_Writer_Excel2007 и PHPExcel_Reader_OOCalc. То есть если вы хотите использовать PHPExcel для полноценной работы с файлами форматов .xlsx или .ods, то вам потребуется zip-расширение.

Возможности библиотеки PHPExcel:

  1. — PHPExcel может читать различные форматы файлов электронных таблиц:
    • Excel5
    • Excel2003XML
    • Excel2007
    • OOCalc
    • SYLK
    • Gnumeric
    • CSV
  2. — Создание и обработка документов средствами PHP

Установка PHPExcel:
1) Скачать библиотеку с официального сайта http://phpexcel.codeplex.com/
2) В скачанном архиве, из папки classes скопировать содержимое в корень сайта

Состав Архива:

/classes                    // Каталог библиотеки PHPExcel
/classess/PHPExcel/         // Каталог классов библиотеки PHPExcel 
/classess/PHPExcel.php      // Файл для include?содержит ключевые  методы для обработки данных
/documentation		    // Полная документация по использованию библиотеки
/license.txt                // Лицензионное соглашение
/install.txt                // Краткая инструкция по установке
/examples            	    // Каталог с примерами по использованию PHPExcel
/changelog.txt              // Список изменений в текущей версии

Пример чтения Excel файла при помощи класса PHPExcel

Для чтения данных с Excel файла необходимо подключить файл библиотеки PHPExcel и используется метод load() класса PHPExcel_IOFactory. Этот метод собирает данные всех со всех листов текущего документа:

require_once '/путь/до/файла/PHPExcel.php';
$excel = PHPExcel_IOFactory::load('/путь/до/файла/simple.xlsx');

Далее формируем массив из всех листов Excel файла с помощью цикла:

Foreach($excel ->getWorksheetIterator() as $worksheet) {
 $lists[] = $worksheet->toArray();
}

Вывод сформированного массива в виде HTML таблиц(ы) :

foreach($lists as $list){
 echo '<table border="1">';
 // Перебор строк
 foreach($list as $row){
   echo '<tr>';
   // Перебор столбцов
   foreach($row as $col){
     echo '<td>'.$col.'</td>';
 }
 echo '</tr>';
 }
 echo '</table>';
}

Основные методы и свойства класса PHPExcel

Класс PHPExcel – это ядро PHPExcel. Он содержит ссылки на содержащиеся листы, параметры безопасности документов и мета-данные документов. Помимо вышеизложенного, этот класс включает в себя множество других полезных методов для обработки получаемых данных. Некоторые из них будут описаны ниже.

getSheetCount() – возвратит количество листов в книге;

getSheetNames() – возвращает список всех листов в рабочей книге, индексируя их в порядке, в котором их «вкладки» появляются при открытии в MS Excel (или других программах для обработки электронных таблиц);

getSheet(N) – используется для доступа к листу по индексу. Индекс позиции (N) представляет собой порядок, в котором отображаются вкладки листов, когда книга открыта в MS Excel (или других программах для обработки электронных таблиц);

getSheetByName(list_name) – метод используется для доступа к листу по его имени (list_name);

getActiveSheet() – этот метод позволяет получить доступ к активному листу документа напрямую. Активным листом является тот, который будет активен, когда откроется книга в MS Excel (или другой соответствующей программе электронных таблиц);

setActiveSheetIndex() и setActiveSheetIndexByName() – с помощью этих методов можно назначить лист, который будет активным по его индексу или имени.

Получение значения ячейки по координатам

Для получения значения ячейки, сперва должна быть найдена ячейка путем использования метода getCell. Значение ячейки может быть получено с помощью следующей команды:

$objPHPExcel->getActiveSheet()->getCell('B8')->getValue();

В случае если вам нужны подсчитанные значения ячейки, вместо getValue(), используйте метод getCalculatedValue():

$objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue();

Получение значения ячейки по строкам и столбцам

Для получения значения ячейки, в листе сначала должна быть найдена ячейка с использованием метода getCellByColumnAndRow. Значение ячейки может быть получено с помощью следующей команды:

$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();

Заключение

В этой статье были рассмотрены основные возможности библиотеки PHPExcel в области чтения excel файлов. Помимо всего выше изложенного, есть возможность более гибко использовать эту библиотеку для работы с различными параметрами таблицы. По этим вопросам рекомендуется обращаться к документации. Библиотека PHPExcel так же адаптирована для работы с другими типами файлов, таких как Excel (BIFF). XLS, Excel 2007 (OfficeOpenXML). XLSX, CSV, Libre / OpenOffice Calc. ODS, Gnumeric, PDF и HTML.

Даем доступ к базе данных MySQL из вне

👁 30 просмотров

Часто, этот процесс сопровождается ошибкой запрета доступа извне типа на подобие:

host ‘myhost’ is not allowed to connect to this mysql server

или таким:

Can't Connect to MySQL Server on IPAddress (10061)

Для решения данной проблемы нужно сделать следующие шаги

Для начала, проверим настройки в файле /etc/mysql/mysql.conf.d/mysqld.cnf

port = 3306
#skip-networking (в смысле, закомментировано)
bind-address = IP_СЕРВЕРА_(НЕ_127.0.0.1)

Дальше, когда пытаемся присоединиться к базе, например, любой управлялкой базами (SQL Manager Lite как вариант — удобно, бесплатно, но на буржуйском наречии), получаем соообщение о том, что наш комп не может соединяться с мускул сервером…

Вариант с firewall исключим для простоты восприятия, но проверить не помешает на будущее.

Дело в том, что MySQL не только умеет ограничить доступ извне к самому серверу, но еще и определить пользователей для доступа удаленно к определенным базам или даже таблицам.

Сначала входим в консоль MySQL:

mysql -u <username> -p<password> <database_name>

Создаем пользователя test с полными правами для базы my_db с паролем superpass

GRANT ALL PRIVILEGES ON `my_db`.* TO test@'%' IDENTIFIED BY 'superpass'

Это создаст пользователя и даст ему права (GRANT) на соединение со всех хостов кроме localhost (127.0.0.1)!

А следующий запрос даст право читать таблицу my_table в базе my_db пользователю test с компьютера 192.168.0.10 с паролем superpass:

GRANT SELECT ON my_db.my_table TO test@192.168.0.10 IDENTIFIED BY 'superpass';

По умолчанию, режим безопасности подключения к MySQL находится под статусом MEDIUM , нам нужно перевести его в режим LOW командой MySQL

mysql> SET GLOBAL validate_password_policy=LOW;

Или это же можно сделать через конфигурационный файл, записав в  my.cnf строчку:

[mysqld]
validate_password_policy=LOW

 

 

 

Установка редактора nano в FreeBSD

👁 102 просмотров

Подумал, что быстро опубликую сообщение о том, как установить Nano (действительно простой в использовании текстовый редактор CLI) на FreeBSD. Хотя я тестировал FreeBSD 9/11, он должен работать и с другими версиями FreeBSD …

После инсталляции ОС на машину, вы обнаружите, что по умолчанию FreeBSD не поставляется с установленным текстовым редактором и команда nano myfile.txt не заработает. Я, в основном, использую Nano и vi, Nano, однако, мой любимый, поскольку его легко использовать ?

Итак, в первую очередь убедитесь, что вы вошли на сервер как «root», затем убедитесь, что ваше дерево портов обновлено, через команду сделаем это:

portsnap fetch update

Если вы не уверены в том, что у вас есть или нет дерева портов, просто попробуйте эту команду

cd /usr/ports

Если вышеуказанное не работает (т. е. не заходит в папку, значит это означает, что у вас нет установленных портов … поэтому запустите приведенную выше команду для загрузки и извлечения, чтобы мы могли продолжить этот учебник). Теперь мы готовы установить (скомпилировать) Nano на нашем сервере FreeBSD, мы делаем это так:

cd /usr/ports/editors/nano 
make install clean 
ln -s /usr/local/bin/nano /usr/bin/nano

Теперь нам доступна команда редактирования через ключевое слово:

nano myfile.txt

Если это команда не сработала, то выполняем:

rehash

И пробуем еще.

Технология Java

👁 65 просмотров

Большая статья про технологии Java, которая будет досконально подробно описывать каждую технологию, со вставками из Wikipedia и других ресурсов. Статья не будет содержать текст автора, а будет ограничиваться техническими терминами и схемами, которые будут приведены под разным углом для лучшего понимания и будет дополняться по мере возможности.

Общая иерархия платформ

Связующей основой на человеческом уровне является язык Java, при помощи которой организуется топология взаимодействия, алгоритмы обработки и передачи данных всех связующих звеньев системы, работающий на этих технологиях. Внизу дана краткая схема звеньев и их место

Общие платформы

Java

Java — сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java-машины. Дата официального выпуска — 23 мая 1995 года.

JDK

JDK(Java Development Kit) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.

JRE

JRE(Java Runtime Environment) — среда выполнения для программ на Java, минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки. Состоит из виртуальной машины — Java Virtual Machine — и библиотеки Java-классов. JRE распространяется свободно и для большинства платформ может быть загружена с сайта Oracle.Средства разработки вместе с JRE входят в JDK.

JVM

JVM(Java Virtual Machine) — виртуальная машина Java — основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM. JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение, и как самостоятельная платформа. Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилировано однажды, запускается везде» (compile once, run anywhere).Виртуальные машины Java обычно содержат Интерпретатор байт-кода, однако, для повышения производительности во многих машинах также применяется JIT-компиляция часто исполняемых фрагментов байт-кода в машинный код.

KVM

KVM — (Kylobyte Virtual Machine) — это виртуальная машина Java разработанная фирмой Sun Microsystems и соответствующая спецификации JVM. KVM была написана с нуля на языке программирования C. Данная виртуальная машина была разработана специально для небольших устройств имеющих ограниченный объём оперативной памяти. Поддерживается ограниченный набор возможностей обычной JVM. Например, KVM может не поддерживать операции с плавающей точкой и финализацию объектов. Стандарт CLDC определяет использование KVM. Буква ‘K’ в начале названия KVM указывает на то, что данная JVM работает с килобайтами памяти, а не с мегабайтами.

Java Card RE

Java Card RE — Java Card Runtime Environment, среда ыполнения апплетов, которые написаны для программного интерфейся Java Card. RE включает в себя реализацию виртуальной машины Java Card, классов API Java Card и служб поддержки времени выполнения, таких как выбор и отмена выбора апплетов.

Java Card VM

Java Card Virtual Machine — Предоставляет набор инструкций виртуальной машины Java-карты (VM), поддерживаемого подмножеством языка Java и форматов файлов, используемых для установки апплетов и библиотек в устройства с поддержкой технологии Java Card.

Термины из раздела

Транслятор — программа или техническое средство, выполняющее трансляцию программы;

Трансляция программы — преобразование программы, представленной на одном из языков программирования, в объектный файл. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текст программы и т. д.;

Объектный файл  — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля, либо библиотеки;

Компоновщик (также редактор связей, от англ. link editor, linker) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль;

Интерпретатор — программа (разновидность транслятора), выполняющая интерпретацию программы;

Интерпретация — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения);

Компилятор — программа или техническое средство, выполняющее компиляцию;

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный файл, иногда на язык ассемблера), выполняемая компилятором;

 

Программные интерфейсы(API)

Java EE

Java EE — (Java Platform, Enterprise Edition, до версии 5.0 — Java 2 Enterprise Edition или J2EE) — набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.

Спецификации детализированы настолько, чтобы обеспечить переносимость программ с одной реализации платформы на другую. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. JEE во многом ориентирована на использование её через веб как в интернете, так и в локальных сетях. Вся спецификация создаётся и утверждается через JCP (Java Community Process) в рамках инициативы Sun Microsystems Inc.

Java SE

Java SE — (Java Platform, Standard Edition, ранее Java 2 Standard Edition или J2SE) — стандартная версия платформы Java 2, предназначенная для создания и исполнения апплетов и приложений, рассчитанных на индивидуальное пользование или на использование в масштабах малого предприятия. Не включает в себя многие возможности, предоставляемые более мощной и расширенной платформой Java 2 Enterprise Edition (J2EE), рассчитанной на создание коммерческих приложений масштаба крупных и средних предприятий.

Java SE Embedded

Java SE Embedded — (Oracle Java Standard Edition Embedded) позволяет пользователям разрабатывать высокофункциональные, надежные и портативные приложения для самых современных встроенных систем. Гибкость платформы Java позволяет пользователям разрабатывать безопасные, инновационные продукты, одновременно повышая экономию средств и ускоряя время выхода на рынок. Oracle Java SE Embedded представляет собой платформу разработки для встроенных устройств, которая обеспечивает лучшую в отрасли надежность, производительность, пропускную способность, безопасность и кросс-платформенную поддержку. Java SE Embedded выполняет такую же роль, что и Java ME Embeded в иерархии, но предназначен для более производительных встраиваемых систем.

Java ME

Java ME — (Java Platform, Micro Edition, ранее — Java 2 Micro Edition, J2ME) — подмножество платформы Java для устройств, ограниченных в ресурсах, например: сотовых телефонов, карманных персональных компьютеров, ресиверов цифрового телевидения, проигрывателей дисков Blu-ray.

Java ME Embedded

Java ME Embedded — это полноценный Java runtime, оптимизированный для устройств с ARM архитектурой и систем с ограниченными аппаратными возможностями. Java ME показывает себя во всей красе на платформах со слабыми вычислительными мощностями и небольшими ресурсами оперативной памяти, которые работают с сетевыми сервисами. Например, такими, как беспроводные модули, модули позиционирования, «умные» счетчики ресурсов, датчики мониторинга окружающей среды, вендинг-машины, телемедицина и, конечно, «умные» дома.

Java TV

Java TV — это технология на основе Java ME, которая обеспечивает эффективное, надежное и простое решение для разработки приложений Java, которые работают в телевизоре и приставках. Используя среду исполнения Java TV, разработчики могут легко создавать приложения, такие как электронные программные гиды (EPG), клиенты Video-on-Demand (VOD), игры и образовательные приложения, приложения для доступа к интернет-данным (например, погода, тикеры новостей, социальные сети), а на большинстве названий дисков Blu-ray — пользовательский интерфейс и бонусный контент.

Java Card

Java Card — версия Java-платформы для устройств с крайне ограниченными вычислительными ресурсами. По сравнению с другими версиями Java изменен байткод, требования к исполняющей платформе, состав стандартных библиотек.

Основное назначение продукта, как следует из названия, — применение в смарткартах. В связи с этим основной упор был сделан на поддержку стандартных криптоалгоритмов.

Java Card дает возможность безопасным образом устанавливать и исполнять небольшие Java-приложения (апплеты) на смарт-картах и других устройствах с весьма ограниченным объёмом памяти. Эта платформа позволяет поставщику программировать устройства и делать их адаптированными под конкретное применение. Java Card широко используется в SIM-картах и банкоматах.

 

Компоненты программного интерфейса Java SE

Java 2D

Java 2D API представляет собой набор классов для расширенной 2D-графики и изображений. Он охватывает линейное воспроизведение, текст и изображения в единой всеобъемлющей модели. API обеспечивает широкую поддержку компоновки изображений и изображений альфа-каналов, набор классов для обеспечения точного определения и преобразования цветового пространства и богатый набор ориентированных на дисплей операторов визуализации. Эти классы предоставляются в виде дополнений к пакетам java.awt и java.awt.image

Java 3D

Java 3D — это высокоуровневый API для 3D-графики, который реализован поверх низкоуровневого API, такого как OpenGL и DirectX. Java 3D основан на так называемом scene graph , который подчеркивает дизайн сцены и содержит геометрию, преобразования, освещение, материал, трансформирование, текстуры и т. д. Вместо рендеринга низкого уровня.

Java 3D API позволяет создавать трехмерные графические приложения и интернет-апплеты на базе Интернета. Он обеспечивает высокоуровневые конструкции для создания и обработки 3D-геометрии и построения структур, используемых для рендеринга этой геометрии. С помощью этого программного обеспечения вы можете эффективно определять и отображать очень большие виртуальные миры.