php将excel转数组,PHP学习第N天:用PHPExcel将Excel转化为数组输出

这些文章都是用来记录php学习经历的,会有很多bug和错误,参考需谨慎。

工作第N天,再过两天就该发工资了,激动一下!

利用PHPExcel将读取和导出Excel文件非常方便,但是初次使用会有很多各种各样的小问题,我将这两天遇到的问题和解决方法整理了一下,希望能够对大家有所帮助。

在整理过程中我参考和使用了大量的互联网上的资料和代码。包括但不仅于下面这些,在这里对各位大牛表示感谢。

前端页面代码:

enctype="multipart/form-data">

Filename:

Excel2arr:

/**

* 符合条件的文件格式

*/

$filename = $_FILES['file']['name'];

/**

* 文件名

*/

$ext = preg_split("/\./", $filename);

/**

* 分割文件名

*/

$ext = strtolower($ext[1]);

/*

* 获取文件后缀名

*/

$allowed_types = array("xls", "xlsx");

$filePath = dirname(__FILE__) . "/" . $_FILES["file"]["name"];

if (!in_array($ext, $allowed_types)) {

echo "File type is wrong!";

die;

} else if (file_exists($filePath)) {

echo "A file with this name already exists!";

die;

} else {

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

}

/**

* @param $val

* @return string

* 检查文件名是否符合要求,如果符合,就保存到指定路径。如果不符合,报错。

*/

require_once dirname(__FILE__) . "/PHPExcel/Classes/PHPExcel.php";

//$filePath=$_FILES["file"]["tmp_name"];

//sleep(50);

$PHPExcel = new PHPExcel();

//默认用excel2007读取excel,若格式不对,则用之前的版本进行读取

$PHPReader = new PHPExcel_Reader_Excel2007();

if (!$PHPReader->canRead($filePath)) {

$PHPReader = new PHPExcel_Reader_Excel5();

if (!$PHPReader->canRead($filePath)) {

return $this->error(null, "no file");

}

}

$PHPExcel = $PHPReader->load($filePath);

$sheetCount = $PHPExcel->getSheetCount();

$sheetNames = $PHPExcel->getSheetNames();

//var_dump($sheetNames);

//die;

/**读取excel文件中有多少个sheet*/

$objExcel = array();

for ($SheetID = 0; $SheetID < $sheetCount; $SheetID++) {

/**读取excel文件中的工作表*/

$name = $sheetNames[$SheetID];

$currentSheet = $PHPExcel->getSheetByName($name);

$name = iconv("utf-8", "gb2312", $name);

/**取得最大的列号*/

$allColumn = $currentSheet->getHighestColumn();

/**取得一共有多少行*/

$allRow = $currentSheet->getHighestRow();

for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {

/**从第A列开始输出*/

for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {

$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();

$val = iconv("utf-8", "gb2312", $val);

$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = $val;

//编码需要转换成gb2312

/*

$val = urlencode($val);

$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = urldecode($val);

*/

}

}

}

unlink($filePath);

/*

* $objExcel = json_encode($objExcel);

* $objExcel = urldecode($objExcel);

* 读取文件中的内容,因为json_encode()的参数必须是utf-8编码。为了保证汉字输出的结果,这里先将数组中的内容用urlencode进行编码,

* 在被json_encode()编码之后,再用urldecode解码。

*/

//return $objExcel;

var_dump($objExcel);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值