php 文件导入

/**
 * 获取表格数据   2017-10-15
 * @param: $fileName表格名字   $headArr表头  $data导出数据  $msg批注
 */
function getData($uid, $file_dir)
{
//    vendor('PHPExcel.PHPExcel');
//    $PHPReader = new \PHPExcel_Reader_Excel2007();



    $PHPReader = new \PHPExcel_Reader_Excel5();
    if (!$PHPReader->canRead($file_dir)) {
        $PHPReader = new \PHPExcel_Reader_Excel2007();
        if (!$PHPReader->canRead($file_dir)) {
            return array(0, '请上传文档');
        }
    }

    //载入文件
    $PHPExcel = $PHPReader->load($file_dir);

    //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
    $currentSheet = $PHPExcel->getSheet(0);

    //获取总行数
    $allRow = $currentSheet->getHighestRow();
    $allColumn = $currentSheet->getHighestColumn();
    $allColumn = ord($allColumn);

    for ($j = 2; $j <= $allRow; $j++) {
        for ($i = 65; $i <= $allColumn; $i++) {
            $colum = chr($i);
            $cell = $currentSheet->getCell($colum . $j)->getValue();
            if ($cell instanceof PHPExcel_RichText) {     //富文本转换字符串
                $cell = $cell->__toString();
            }

            $data[$j][$colum] = $cell;
        }
    }
    return array(1, $data);
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于大文件导入,可以考虑使用 PHPExcel 库的 ChunkReadFilter 功能,将大文件分块读取,避免一次性读取整个文件导致内存溢出。具体步骤如下: 1. 创建 ChunkReadFilter 类,实现 PHPExcel_Reader_IReadFilter 接口,用于指定要读取的单元格范围。 2. 在读取 Excel 文件前,设置 ChunkReadFilter 对象的读取范围,并将其作为参数传递给 PHPExcel_Reader_Excel2007 类的 setReadFilter() 方法。 3. 使用 PHPExcel_IOFactory 类的 createReader() 方法创建 Excel 读取器对象,并使用该对象的 load() 方法读取 Excel 文件。 4. 循环读取每个块的数据,并将其存储到数据库或其他存储介质。 以下是示例代码: ```php class ChunkReadFilter implements PHPExcel_Reader_IReadFilter { private $_startRow = 0; private $_endRow = 0; public function setRows($startRow, $chunkSize) { $this->_startRow = $startRow; $this->_endRow = $startRow + $chunkSize; } public function readCell($column, $row, $worksheetName = '') { // 读取指定单元格范围内的数据 if ($row >= $this->_startRow && $row < $this->_endRow) { return true; } return false; } } // 设置要读取的块大小 $chunkSize = 1000; // 加载 Excel 文件 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $chunkFilter = new ChunkReadFilter(); $objReader->setReadFilter($chunkFilter); // 循环读取每个块的数据 for ($startRow = 2; $startRow <= $totalRows; $startRow += $chunkSize) { $chunkFilter->setRows($startRow, $chunkSize); $objPHPExcel = $objReader->load($filename); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); foreach ($sheetData as $row) { // 存储数据到数据库 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值