本文目录一览:

php读取excel,excel下多个个工作表,该怎么读取

php有个PHPExcel扩展,是可以实现你的要求的。

我这里有个可以读取多个工作薄的自定义excel类,试试看:

?php

/**

*excel.class.php

*/

class Excel

{

/**

* 从excel文件中取得所有数据。并转换成指定编码格式。

* $toCode 表示需要转换成的编码格式,目前扩充了utf8,gbk2312,html三种格式。

* @return 返回二维数组。

*/

static function getDataFromExl($filePath,$toCode = "utf8")

{

$fh = @fopen($filePath,'rb');

if( !$fh || filesize($filePath)==0 )

{

return -1; //文件不可读或者为空

}

$fc = fread( $fh, filesize($filePath) );

@fclose($fh);

if( strlen($fc) filesize($filePath) )

{

return -2; //读取错误

}

$exc = new ExcelFileParser();

$res = $exc-ParseFromString($fc);

$ws_number = count($exc-worksheet['name']);//取得工作薄数量

if( $ws_number 1 )

{

return -3;

}

for ($ws_n = 0; $ws_n $ws_number; $ws_n++)

{

$ws = $exc - worksheet['data'][$ws_n];

$data = $ws['cell'];

foreach($data as $k=$v) //一行数据

{

$row = null;

foreach($v as $a=$d) //一行数据的一个字节

{

$value = null;

if(count($d) == 1)

{

continue;

}

if($d['type'] == 0) //如果是字符类型则转换成为指定编码格式

{

$ind = $d['data'];

if( $exc-sst['unicode'][$ind] ) //返回数据编码格式

{

switch($toCode)

{

case "utf8":

$s = Strings::uc2utf8($exc-sst['data'][$ind]);

break;

case "gbk":

$s = Strings::uc2gbk($exc-sst['data'][$ind]);

break;

case "html":

$s = Strings::uc2html($exc-sst['data'][$ind]);

break;

default:

$s = Strings::uc2utf8($exc-sst['data'][$ind]);

break;

}

}

else

{

$s = $exc-sst['data'][$ind];

}

if( strlen(trim($s))==0 || $s === null )

{

$value = '';

}

else

{

$value = $s;

}

}

elseif($d['type'] == 3)

{

$time_list = explode('.', $d['data']);

$time_format = $time_list[2].'-'.$time_list[0].'-'.$time_list[1];

$timestamp = strtotime($time_format);

$value = date("Y-m-d H:i:s", $timestamp);

}

else

{

$value = $d['data'];

}

$row[$a] = $value;

}

$recordList[] = $row;

}

}

return $recordList;

}

}

require_once('./excel.class.php');

$emailData = Excel::getDataFromExl($_FILES['file_name']['tmp_name']);

PHP远程读取excel文件,怎么读取

PHPExcel 通过 PHPExcel_Shared_OLERead 类的 read 方法读取文件

但 read 方法里使用了 is_readable 函数来确认文件是否存在,而 is_readable 不能作用于 url

所以不可直接远程读取

但若绕过 is_readable 函数的话,就是可以的

public function read($sFileName)

{

// Check if file exists and is readable

if(!is_readable($sFileName)) {

throw new Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable.");

}

// Get the file data

$this-data = file_get_contents($sFileName);

php怎样读取excel表格内容?

常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。

1. 以.csv格式读取

将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。

优点:跨平台,效率比较高、可以读写。

缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个SHEET。

PHP有自带的分析.csv函数:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。

length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。

delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。

enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。

注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。

当然也可以自己手动分析字符串。

还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。

2. ODBC链接数据源

优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。

缺点:值支持windows服务器

3. PHP自定义类

优点:跨平台。某些类支持写操作。支持.xls二进制文件

常用的类有phpExcelReader、PHPExcel。其中后者支持读写,但是需要php5.2以上版本。

phpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。

该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。

不过我下载回来的 (版本 2009-03-30),有两点要注意:

reader.php 中的下面这行要修改

将 require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;

改为 require_once ‘oleread.inc’;

example.php 中

修改 $data-setOutputEncoding(’CP1251′);

为 $data-setOutputEncoding(’CP936′);

example2.php 中

修改 nl2br(htmlentities($data-sheets[$sheet]['cells'][$row][$col]));

为 $table_output[$sheet] .= nl2br(htmlspecialchars($data-sheets[$sheet]['cells'][$row][$col]));

不然中文会有问题。

繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。

修改 $data-read(’jxlrwtest.xls’) 为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。

php excel reader读取excel内容

            if($result){        //如果上传成功了

                import("Org.Util.PHPExcel.Reader.Excel5");  //引入PHPExcel类,这是在thinkphp中使用

                import("Org.Util.PHPExcel.IOFactory");

                import("Org.Util.PHPExcel.Worksheet.MemoryDrawing");

                import("Org.Util.PHPExcel");                

                                $fileType = /PHPExcel_IOFactory::identify($result); //文件名自动判断文件类型

                                $objReader = /PHPExcel_IOFactory::createReader($fileType);

                                $objPHPExcel = $objReader-load($result);

                                $currentSheet = $objPHPExcel-getActiveSheet();

                                $highestRow = $currentSheet-getHighestRow();

                                $highestColumn = $currentSheet-getHighestColumn();

                                $objWorksheet = $objPHPExcel-getActiveSheet();

                                $highestRow = $objWorksheet-getHighestRow();

                                $time = time();

                //先处理图片

                        $date = date("YmdH",time());

                        $TmpPath = UPLOAD_DIR.$date.'/';

                        if(!mkDirs($TmpPath)){

                                echo 'mkdir error';exit;

                        }

                        $Allnewpic= $currentSheet-getDrawingCollection();  //获取文档中所有图片

                                foreach ($Allnewpic as $k = $drawing) {    //文档中图处理方法

                                                                $image = $drawing-getImageResource();

                                                                $filename=$drawing-getIndexedFilename();

                                                                $XY=$drawing-getCoordinates();

                                                                //把图片存起来

                                                                imagepng($image, $TmpPath.$filename);

                                                                /*这里后续要做图片压缩处理*/

                                                                //把图片的单元格的值设置为图片名称

                                                                $cell = $currentSheet-getCell($XY);

                                                                $cell-setValue("Upload/image/".$date.'/'.$filename);

                                }

                                $goodMsArr = array();

                                $errorArr = array();

                                    for ($row = 3;$row = $highestRow;++$row){

                                        $bn =$objWorksheet-getCellByColumnAndRow(4, $row)-getValue(); //E 品牌

                                        $link =$objWorksheet-getCellByColumnAndRow(5, $row)-getValue(); // F链接

                                        $img =$objWorksheet-getCellByColumnAndRow(6, $row)-getValue(); // G图片 

                                        $color =preg_replace(array('///s+/','///n/'),array('|','|'),trim($objWorksheet-getCellByColumnAndRow(7, $row)-getValue())); //H颜色串

                                        $size =str_replace(array(' ',',',',','-'),array('|','|','|','|'),trim($objWorksheet-getCellByColumnAndRow(9, $row)-getValue()));//J 尺寸串

                                        $price =trim($objWorksheet-getCellByColumnAndRow(12, $row)-getValue()); // H价格

                                        //--------------是不是重复导入相同的编号,,网站编号是唯一的

                                        if($m-query("SELECT goodsId FROM __PREFIX__goods WHERE goodsBn='".$bn."'")){

                                            $errorArr[] = "第".$row."行的编号【".$bn."】导入重复";continue;

                                        }

                                        if($bn==""){

                                            $errorArr[] = "第".$row."行的编号为空";continue;

                                        }

                                        if($img==""){

                                            $errorArr[] = "第".$row."行的图片为空";continue;

                                        }

                                        if($color==""){

                                            $errorArr[] = "第".$row."行的颜色为空";continue;

                                        }

                                        if($price==""){

                                            $errorArr[] = "第".$row."行的价格为空";continue;

                                        }

                                        $sql = "INSERT INTO __PREFIX__goods(`goodsBn`,`goodsLink`,`goodsImg`,`color`,`size`,`marketPrice`,`createTime`) 

                                                VALUES('".$bn."','".$link."','".$img."','".$color."','".$size."','".$price."',".time().")";

                                        if(!$m-execute($sql)){

                                            $errorArr[] = "第".$row."行的数据导入错误";continue;

                                        }

                                    }

                    unlink($result);

                            }else{

                    echo 'file upload error';exit;

            }

php怎么读取excel 文件数据并输出

PHPExcel

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

PHP读取示例代码

//获取上传的excel临时文件

$path = $_FILES["file"]["tmp_name"];

//将临时文件移动当前目录,可自定义存储位置

 

move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);

//将获取在服务器中的Excel文件,此处为上传文件名

$path = $_FILES["file"]["name"];

//调用readExcel函数返回一个

二维数组

$exceArray = readExcel($path);

 

//创建一个读取

excel函数

function readExcel($path){

        //引入PHPExcel类库

    include 'Classes/PHPExcel.php';            

    include 'Classes/PHPExcel/IOFactory.php';

 

    $type = 'Excel5';//设置为Excel5代表支持2003或以下版本,

Excel2007代表2007版

    $xlsReader = /PHPExcel_IOFactory::createReader($type);  

    $xlsReader-setReadDataOnly(true);

    $xlsReader-setLoadSheetsOnly(true);

    $Sheets = $xlsReader-load($path);

    //开始读取上传到服务器中的Excel文件,返回一个

二维数组

    $dataArray = $Sheets-getSheet(0)-

toArray();

    return $dataArray;

}

如何读取excel文件 php

主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel。

PHPExcelReader比较轻量级,仅支持Excel的读取,实际上就是一个Reader。但是可惜的是不能够支持Excel 2007的格式(.xlsx)。

PHPExcel比较强大,能够将内存中的数据输出成Excel文件,同时还能够对Excel做各种操作,下面主要介绍下如何使用PHPExcel进行Excel 2007格式(.xlsx)文件的读取。

下载PHPExcel后保存到自己的类文件目录中,然后使用以下代码可以打开Excel 2007(xlsx)格式的文件:

require_once '/libs/PHPExcel-1.8.0/Classes/PHPExcel.php';     //修改为自己的目录

echo 'pTEST PHPExcel 1.8.0: read xlsx file/p';

$objReader = PHPExcel_IOFactory::createReaderForFile($filename); 

$objPHPExcel = $objReader-load($filename);

$objPHPExcel-setActiveSheetIndex(1);

$date = $objPHPExcel-getActiveSheet()-getCell('A16')-getValue();

输出$date变量就能够看到文件中的内容了。PHPExcel使用PHPExcel_IOFactory这个类来自动匹配所上传的文件类型,当然我们也可以自己制定要解析的文件类型。之后通过load方法,将PHP文件加载到objPHPExcel对象中。如果Excel文件有多个Sheet,可以通过setActiveSheetIndex来设置当前活动的Sheet。

需要注意的是,对于Excel中的日期格式,PHPExcel读出来的是不是日期类型,需要我们使用以下方法来进行日期类型转换。

 echo date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($date));

下面的代码显示了如何遍历显示Excel的内容:

table id="table_id"

?php

     $objWorksheet = $objPHPExcel-getActiveSheet();

     $i = 0;

     foreach($objWorksheet-getRowIterator() as $row){

     ?

          tr

          ?php

               $cellIterator = $row-getCellIterator();

               $cellIterator-setIterateOnlyExistingCells(false);

                    if( $i == 0 ){

                         echo 'thead';

                    }

               foreach($cellIterator as $cell){

                    echo 'td' . $cell-getValue() . '/td';

               }

                    if( $i == 0 ){

                         echo '/thead';

                    }

               $i++;

          ?

          /tr

     ?php

     }

?

/table