Нужно читать таблицы Excel, хранить в Oracle DB, используя PHP, для просмотра в сетке группировки EXTJS. - PullRequest
1 голос
/ 07 апреля 2011

У меня есть синтаксический анализатор PHP, использующий PHPExcel, который читает файл Excel и сохраняет его содержимое в базе данных Oracle.

Проблема в том, что анализатор читает каждую строку и не устанавливает никаких различий между заголовками строк и данными, содержащимися в этих строках. Когда информация считывается из базы данных, она читается в виде простого списка файлов, и с ней нелегко ориентироваться.

Я сейчас читаю данные в EXTJS Grid. Я хотел бы иметь возможность прочитать Excel, сохранить его в БД, затем вытащить его и просмотреть в новой группе EXTJS GroupingGrid, где группа будет «заголовком» для каждого рабочего листа в файле Excel.

Кто-нибудь когда-либо использовал PHPExcel или знал, как использовать PHPExcel для чтения файла Excel и вывода заголовка (1,1) на каждом листе, чтобы я мог сохранить его в базе данных, вытащить и показать в JSON, поэтому groupingGrid даст мне возможность иметь знак плюс для каждого заголовка, чтобы я мог щелкнуть знак плюс и просмотреть все содержимое этого заголовка в сетке?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011
//  Include the PHPExcel library
require_once './Classes/PHPExcel.php';
//  Load the Excel File
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load("myExcelFile.xls");
//  Loop through every worksheet
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
   //  Read the value at Cell A1 in the current worksheet
   $cellValue = $worksheet->getCell('A1')->getValue();
   //  Do whatever you want with $cellValue
   //  Store it in a database
   //  Whatever...
}

Конечно, вы можете также захотеть немного обработать ошибки, если myExcelFile.xls не существует, или у вас нет прав на чтение, или вы не являетесь файлом Excel, но просто заключите в оболочку это в блоке try / catch и обрабатывай как хочешь.

Вы также можете настроить фильтр чтения, если хотите загружать только первую строку каждого листа, а не каждую строку и столбец:

//  Include the PHPExcel library
require_once './Classes/PHPExcel.php';

/**  Define a Read Filter class implementing PHPExcel_Reader_IReadFilter  */
class firstRowFilter implements PHPExcel_Reader_IReadFilter
{
    public function readCell($column, $row, $worksheetName = '') {
        //  Only read the heading row
        return ($row == 1);
}

//  Create an instance of our Read Filter
$firstRowFilter = new firstRowFilter();

//  Instantiate the correct Reader
$objReader = PHPExcel_IOFactory::createReader('Excel5');
//  Tell the Reader only to load cells that match our Read Filter
$objReader->setReadFilter($firstRowFilter)
//  Load the Excel File
$objPHPExcel = $objReader->load("myExcelFile.xls");
//  Loop through every worksheet
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
   //  Read the value at Cell A1 in the current worksheet
   $cellValue = $worksheet->getCell('A1')->getValue();
   //  Do whatever you want with $cellValue
   //  Store it in a database
   //  Whatever...
}
0 голосов
/ 07 апреля 2011

Hy, вы можете использовать этот php-excell-reader http://code.google.com/p/php-excel-reader/.Я использую это и отлично работает.Вы можете манипулировать каждой ячейкой каждой строки.

  1. Подсчет ячеек
  2. Подсчет строк
  3. Сделать цикл для этого подсчета и манипулировать данными (вы можете добавить +1, если вы хотите пропустить первый ряд или первую ячейку.
...