1

我有一个使用 PHPExcel 的 PHP 解析器,它读取 Excel 文件并将内容存储到 Oracle 数据库中。

问题是解析器读取每一行并且没有在行的标题和这些行中包含的数据之间设置任何区别。当从数据库中读取信息时,它会在平面文件列表中读取,并且不容易导航。

我目前正在将数据读入 EXTJS 网格。我希望能够读取 Excel,将其存储在数据库中,然后将其拉出并在新的 EXTJS GroupingGrid 中查看,其中该组将是 Excel 文件中每个工作表的“标题”。

有没有人使用过 PHPExcel 或者知道如何使用 PHPExcel 读取 Excel 文件并在每个工作表中输出标题 (1,1),以便我可以将其存储在数据库中并将其拉出并以 JSON 格式显示,所以groupingGrid 将使我能够为每个标题添加一个加号,以便我可以单击加号并查看网格中该标题下的所有内容?

4

2 回答 2

0
//  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 文件,而只需将其包装在尝试/捕获块并根据需要处理。

如果您只想加载每个工作表的第一行而不是每一行和每一列,也可以设置读取过滤器:

//  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...
}
于 2011-04-07T07:44:44.753 回答
0

嗨,你可以使用这个 php-excell-reader http://code.google.com/p/php-excel-reader/。我正在使用它并且效果很好。您可以操作每一行的每个单元格。

  1. 计算细胞
  2. 计算行数
  3. 对该计数进行循环并操作数据(如果要跳过第一行或第一个单元格,可以添加 +1。
于 2011-04-07T01:26:13.830 回答