php操作excel文件 基于phpexcel_php技巧

所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel. 该项目的详细信息 http://phpexcel.codeplex.com/ 。
我目前使用的是phpexcel1.7.3版本, 解压缩后里面有一个PHPExcel和PHPExcel.php文件。
我们主要使用那个PHP文件。见下图文件目录结构

这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持。于是乎我就将它转化为2003。感觉支持地很好。
下面介绍一下具体的使用:

复制代码 代码如下:

require_once('./phpexcel1.7.3/PHPExcel.php');
$php_excel_obj = new PHPExcel();
$php_reader = newPHPExcel_Reader_Excel2007();

if(!$php_reader->canRead($file_name))
{
$php_reader= new PHPExcel_Reader_Excel5();
if(!$php_reader->canRead($file_name))
{
echo'NO Excel!';
}
}
$php_excel_obj = $php_reader->load($file_name);
$current_sheet =$php_excel_obj->getSheet(0);

上面的主要功能是初始化相关的excel类,并装载excel第一个sheet

$all_column =$current_sheet->getHighestColumn();
$all_row =$current_sheet->getHighestRow();

以上分别获得该表格的最大列值(字母表示如:‘G'),和最大的行数(数值表示)

下面将使用循环来讲excel里面的数据读到excel中:

复制代码 代码如下:

$all_arr = array();
$c_arr = array();

//字符对照表
for($r_i = 1; $r_i<=$all_row; $r_i++)
{
$c_arr= array();
for($c_i= 'A'; $c_i<= 'B'; $c_i++)
{
$adr= $c_i . $r_i;

$value= $current_sheet->getCell($adr)->getValue();

if($c_i== 'A' && empty($value) )
break;
if(is_object($value))
$value= $value->__toString();
$c_arr[$c_i]= $value;
}

$c_arr&& $all_arr[] = $c_arr;
}

下面简单地介绍一下phpexcel的写操作,这个操作经常用于将数据库中的数据导入到excel中,便于展示和做成更美观的效果。

复制代码 代码如下:

require_once('./phpexcel1.7.3/PHPExcel.php');

$excel_obj = new PHPExcel();
$objWriter = newPHPExcel_Writer_Excel5($excel_obj);
$excel_obj->setActiveSheetIndex(0);
$act_sheet_obj=$excel_obj->getActiveSheet();

$act_sheet_obj->setTitle('sheet');
$act_sheet_obj->setCellValue('A1', '字符串内容');
$act_sheet_obj->setCellValue('A2', 26);

$file_name = "output.xls";
$objWriter->save($file_name);

代码很简单, 首先初始化相关的excel写类,然后写入数据,最后保存为xls文件。
输出的效果见图

时间: 2024-08-29 11:39:50

php操作excel文件 基于phpexcel_php技巧的相关文章

C#在客戶端和服務端操作Excel文件

excel 一.在客戶端把數據導入到Excel文件步驟 1.創建Excel application對象,打開或生成Excel文件 //服務端創建StringBuilder對象     System.Text.StringBuilder  sb=new System .Text .StringBuilder ();     //指定客戶端執行語言 sb.Append ("<Script Language=VBScript>");     sb.Append ("&l

[JAVA100例]038、操作Excel文件

import java.io.File; import java.util.*; import jxl.*; import jxl.write.*; /** * <p>Title: 操作EXCEL文件</p> * <p>Description: 本实例演示使用jxl包实现对excel文件的操作</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: myExcel

最近使用EPPlus 3.1.3操作EXCEL文件的时提示Error saving file E:\\***

问题描述 最近使用EPPlus3.1.3操作EXCEL文件的时提示ErrorsavingfileE:\***:请哪位大侠帮忙指点下,谢谢!C#语言调用,该问题时常碰见,调试也不一定出现,文件都正常,没有被占用等,之后的操作也可能会成功. 解决方案 解决方案二:其中innerException提示是"给定关键字不在字典中."

Java使用Apache POI操作excel文件

官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format. 从官方文档中了解到:POI提供的HSSF包用于操作 Excel '97(-2007)的.xls文件,而XSSF包则用于操作

Java操作Excel文件

今天,我来教大家怎么实现Java操作Excel文件. import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * @author HuangQinJian 上午11:04:58 2017年5月1日 */ public class Exc

Android操作Excel文件的功能实现

Android中操作Excel文件导出报表时主要采用开源库jxl,最早用在java上,但也可用于Android.与之类似的POI,因为依赖库众多,所以只能用于java,而不能用于Android. 使用jxl需要在Android工程中导入jxl.jar包,jxl可以完成Excel的基本读写操作,其支持与不支持的情况如下: 1.jxl只支持Excel2003格式,不支持Excel2007格式.即支持xls文件,不支持xlsx文件. 2.jxl不支持直接修改excel文件,但可通过复制新文件覆盖原文件

php 操作excel文件的方法小结_php技巧

一.php,不用COM,生成excel文件 复制代码 代码如下: <? header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t

java JXL操作Excel文件

-------------jxl和POI的区别(来自网络,感谢)----- jxl优点: ①Jxl对中文支持非常好,操作简单,方法看名知意. ②Jxl是纯javaAPI,在跨平台上表现的非常完美 ③生成Excel 2000标准格式 ④支持字体.数字.日期操作 ⑤能够修饰单元格属性 ④支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式. 缺点:效率低,图片支持不完善,对格式的支持不如POI强大 POI优点: ①效率高,效率测试,可参考:http://blog.csdn.

ASP.NET操作Excel备忘录_实用技巧

问题一:拒绝访问 拒绝访问的可能性有三种, 一种是当前操作用户没有访问权限. 二种是进程里面已经有着Excel.exe的进程存在而程序没有及时的清除. 三种是指定的Excel正在被另一个进程使用. 第一种解决方案 向指定的Excel文件夹赋予aspnet权限,然后在web.config中的<system.web>中添加一段代码 <identity impersonate="true"></identity> 这样就可以了! 第二种解决方案 查看任务管