phpexceltable
‘壹’ 通过table标签,php输出EXCEL的实现方法 缺陷修改,在线等
通过table标签,PHP输出EXCEL的实现方法 缺陷修改
<?php
header("Content-type:application/vnd.ms-excel");
header("Conten-Disposition:filename=hp.xlsx");
?>
‘贰’ 请教PHPExcel的问题
1、$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) );能够设置颜色。
2、合并后的单元格坐标是原最左上角的单元格,如合A1:B2合并后坐标是A1。
3、照你的提示信息,应该是你没有给出坐标。如$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');中你并没有指定A1这个参数。检查你用在此处的PHP变量是否引用正确(如拼写错误等)。
‘叁’ 使用phpexcel导入excel表格数据到MYsql,乱码怎么解决
如果你要求的excle表格不是很复杂 .可以用html的table表格来实现.因为excle的兼容性可以打开xml文档.所以你可以使用html文件来当做excle文件.如果比较复杂 ,就要使用phpexcle了
这个是网页自动导出的基本思路
如果只是导出几个少数的表和内容
你可以使用phpmyadmin的导出功能.能够实现导出excle文档.
‘肆’ PHP如何导出Excel文件
昨天项目里有个新需求,客户希望把一些数据能导出成为Excel表格,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一个比较着名的库:PHPExcel。下面是一个简单的demo,分享给大家,希望可以帮到有同样需求的朋友。
1.网络:phpexcel,结果如图所示,点击第一个结果;
PHP导出Excel,PHP输入Excel
2.进入官网后,找到右边的download按钮,下载,下载完成的是一个压缩文件,解压放到你的项目目录里,根据个人情况而定;
PHP导出Excel,PHP输入Excel
PHP导出Excel,PHP输入Excel
3.因为这里给大家做演示,所以建了一个测试文件,有点基础的都能明白是怎么回事,下面进入代码;
PHP导出Excel,PHP输入Excel
4.
//引入PHPExcel库文件(路径根据自己情况)
include './phpexcel/Classes/PHPExcel.php';
//创建对象
$excel = new PHPExcel();
//Excel表格式,这里简略写了8列
$letter = array('A','B','C','D','E','F','F','G');
//表头数组
$tableheader = array('学号','姓名','性别','年龄','班级');
//填充表头信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
PHP导出Excel,PHP输入Excel
5.
//表格数组
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小张','女','20','102'),
array('4','小赵','女','20','103')
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
PHP导出Excel,PHP输入Excel
6.
//创建Excel输入对象
$write = new PHPExcel_Writer_Excel5($excel);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="testdata.xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
PHP导出Excel,PHP输入Excel
7.打开页面,刷新的时候会弹出对话框,让你选择文件保存路径和文件名称,我直接放在了桌面上,如图所示;
PHP导出Excel,PHP输入Excel
PHP导出Excel,PHP输入Excel
8.打开表格后,数据和格式跟代码中的一致,说明PHP导出的Excel是正确的。如果出现错误,检查一下你的表格数组和数据数组吧。
PHP导出Excel,PHP输入Excel
‘伍’ phpExcel导出,少了中间一列,求教这是怎么回事呀,被写入的数组的数据是没有缺少的
你的 $letter = array('A','B','C','D','E','F','F','G','H','I','J','K','L'); 怎么有两个 F 列?
‘陆’ php 用table导出xls 单元格没有合并
table导出的就是这样,PHP导出EXCEL我都是使用PHPEXCEL来操作。
虽然比直接改header生成xls麻烦了,但是支持的功能够多。
偷懒的话我就直接前端生成xls。
最后,你把客户信用卡信息透露出来,不怕银监会调查你们吗?
‘柒’ 如何用phpexcel导出格式表
1.网络:phpexcel,结果如图所示,点击第一个结果;
2.进入官网后,找到右边的download按钮,下载,下载完成的是一个压缩文件,解压放到你的项目目录里,根据个人情况而定;
3.因为这里给大家做演示,所以建了一个测试文件,有点基础的都能明白是怎么回事,下面进入代码;
4.
//引入PHPExcel库文件(路径根据自己情况)
include './phpexcel/Classes/PHPExcel.php';
//创建对象
$excel = new PHPExcel();
//Excel表格式,这里简略写了8列
$letter = array('A','B','C','D','E','F','F','G');
//表头数组
$tableheader = array('学号','姓名','性别','年龄','班级');
//填充表头信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
5.
//表格数组
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小张','女','20','102'),
array('4','小赵','女','20','103')
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
‘捌’ PHPExcel 怎么设置图表的次坐标啊
什么是次坐标? 坐标不是A2,B2这种吗?
<?php
namespace system\models;
use PYP;
use lib\app\CModel;
use system\models\Seed;
use lib\db\Exception;
class Execl extends CModel{
/*
*将数组导出生成execl
*$head 表头,相当于字段名 数组
*$data 数据 数组
*/
function exportexecl($head,$data){
// 创建一个处理对象实例
$objExcel = new \lib\app\Report();
//计算数据条数
$leng = count($data);
$PHPExcel_Cell_DataType=PYP::getAttr('PHPExcel_Cell_DataType');
/*设置当前的sheet索引,用于后续的内容操作。
*一般只有在使用多个sheet的时候才需要显示调用。
*缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
*/
if($leng>5000){
$t = floor($leng/5000) + 1;
for($sheet = 0; $sheet <= $t; $sheet++)
{
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('sheet'.$sheet);
//设置单元格内容
//由PHPExcel根据传入内容自动判断单元格内容类型
$objExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial')->setSize(10);
$i = 'a';
foreach($head as $title){
$objActSheet->setCellValue($i . '1',$title );
$i++;
}
$j = 2;
foreach ($data as $row){
$i = 'a';
foreach ($row as $cell){
$objActSheet->setCellValueExplicit($i . $j,(string)$cell,$PHPExcel_Cell_DataType::TYPE_STRING);
$i++;
}
$j++;
}
}
}else{
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('sheet1');
//设置单元格内容
//由PHPExcel根据传入内容自动判断单元格内容类型
$objExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial')->setSize(10);
$i = 'a';
foreach($head as $title){
$objActSheet->setCellValue($i . '1',$title );
$i++;
}
$j = 2;
foreach ($data as $row){
$i = 'a';
foreach ($row as $cell){
$objActSheet->setCellValueExplicit($i . $j,(string)$cell,$PHPExcel_Cell_DataType::TYPE_STRING);
$i++;
}
$j++;
}
}
//输出内容
//$objWriter = new PHPExcel_Writer_Excel5($objExcel);
$objExcel->save();
$filename = $objExcel->getFile();
$file = "http://" . ROOT_URL . '/reports/'.$filename . '.xls';
return $file;
}
/*
*进行数据检查,查看execl中的数据是否合法
*将得到的execl中获得的数组插入到数据库临时表中,
*能插入在数据正确,不能再数据错误,并记录改行数据的数组编号
*return $data 原数组数据
* $data['result'] 数据验证结果
* $data['errormsg'] 数据有错误是,返回的数据错误行数
*/
function importexecl_check($fileadd,$tablename,$colums,$session_id){
//获取execl 文本信息,并转换成数组
$object=PYP::getAttr('PHPExcel_CachedObjectStorageFactory');
$cacheMethod = $object::cache_in_memory_gzip;
$cacheSettings = array();
$object=PYP::getAttr('PHPExcel_Settings');
$object::setCacheStorageMethod($cacheMethod,$cacheSettings);
$object=PYP::getAttr('PHPExcel_IOFactory');
$objPHPExcel = $object::load($fileadd);
$data = $objPHPExcel->getSheet(0)->toArray();
//初始化计数变量,当有错误的数据数量超过20条时,则停止继续插入数据,跳出返还结果
$count = 0;
//初始化数据检查结果,如果数据不符合规则,则返回flase
$result = true;
//初始化接受数据变量,最后将execl中的数据返还
$return = array();
//var_mp($data);die;
$lengc = count($colums);
$lengd = count($data[0]);
if($lengc != $lengd){
$return['result'] = false;
$return['errormsg'] = '您上传的execl不符合规格';
return $return;
}
//对表的字段进行处理
$leng = count($data);
$colums = implode(',',$colums);
$colums .= ' ,SessionID';
$tablename .= '_i';
//遍历数据,检查数据是否符合规格
for ($i =1 ;$i < $leng;$i++){
$value = '';
foreach($data[$i] as $v){
$value .= "\"" . self::signReplace($v) . "\",";
}
$return['data'][] = $data[$i];
$value .= "'" . $session_id . "'";
$sql = "INSERT INTO $tablename ($colums) VALUES($value)" ;
try{
$result = self::queryEx($sql);
}catch (Exception $e){
$result = false;
}
if(!$result){
$result = false;
$errormsg[] = $i;
$count++;
if($count >20){
break;
}
continue;
}
}
//返回结果 @result ----数据是否有错误
// @errormsg -- 如果有错误,说明错误所在行数
$return['result'] = $result;
if(isset($errormsg)){
$return['errormsg'] = $errormsg;
}else{
$return['errormsg'] = null;
}
//清除本次操作数据库插入的临时表数据
$sql = "delete from " .$tablename. " where SessionID = " .$session_id ;
self::queryEx($sql);
return $return;
}
/*
* 获取execl中的数据
* @path exel路径
*/
public function getexecl($path){
$object=PYP::getAttr('PHPExcel_CachedObjectStorageFactory');
$cacheMethod = $object::cache_in_memory_gzip;
$cacheSettings = array();
$object=PYP::getAttr('PHPExcel_Settings');
$object::setCacheStorageMethod($cacheMethod,$cacheSettings);
$object=PYP::getAttr('PHPExcel_IOFactory');
$objPHPExcel = $object::load($path);
$data = $objPHPExcel->getSheet(0)->toArray();
$leng = count($data);
$data = array_slice($data,1,$leng-1);
return $data;
}
/*导入到数据库*/
public function importexcle($tablename,$colums,$key,$data,$dbkey){
//初始化返回结果
$result = array();
$result['result'] = true;
//查找逻辑key 所在的列
foreach ($colums as $k => $v){
if($v == $key){
$datakey = $k;
}
}
if(!isset($datakey)){
$result['result'] = false;
$result['errormsg'] = "表中字段没有业务key" ;
return $result;
}
$leng = count($data);
$columstr = implode(',',$colums);
$columstr .= ' ,' .$dbkey ;
//插入或者更新execl数据
foreach ($data as $k => $v){
if(empty($v[$datakey])){
$result['result'] = false;
$result['errormsg'][] = "业务编号不能为空或者不能为0" ;
break;
}
$sql = "SELECT " . $key . " from " . $tablename . " where " . $key . " = \"" . self::signReplace($v[$datakey]) . "\"";
$count = self::query($sql);
if (empty($count)){
$str = '';
foreach($v as $cell){
if($cell === '' || $cell === null ){
$str .= 'null' . ',';
}else{
$str .= "\"" . self::signReplace((string)$cell) . "\",";
}
}
$seedid = Seed::GetSeedId($dbkey);
$str .= "'" . $seedid . "'";
$sql = "INSERT INTO " . $tablename ." (" . $columstr .") VALUES(" .$str .")" ;
try{
self::queryEx($sql);
}
catch(Exception $e)
{
$result['result'] = false;
$result['errormsg'][] = $k;
}
}
else{
$sql = "update " . $tablename ." set " ;
foreach ($v as $ck => $cv){
if($colums[$ck] === '' || $colums[$ck] === null){
$sql .= $colums[$ck] . ' = null ,';
}else{
$sql .= $colums[$ck] ." = \"" . self::signReplace((string)$cv) ."\", ";
}
}
$sql = substr($sql,0,-2);
$sql .= " where " . $colums[$datakey] . " = \"" . self::signReplace($v[$datakey]) . "\"";
try{
self::queryEx($sql);
}
catch (Exception $e){
$result['result'] = false;
$result['errormsg'][] = $k;
}
}
}
return $result;
}
/*导入到数据库*/
public function excleinsert($tablename,$colums,$data,$dbkey){
//初始化返回结果
$result = array();
$result['result'] = true;
$leng = count($data);
$columstr = implode(',',$colums);
$columstr .= ' ,' .$dbkey ;
$lengc = count($colums);
$lengd = count($data[0]);
if($lengc != $lengd){
$return['result'] = false;
$return['errormsg'] = '您上传的execl不符合规格';
return $return;
}
//插入execl数据
foreach ($data as $k => $v){
$str = '';
foreach($v as $cell){
$str .= "\"" . self::signReplace((string)$cell) . "\",";
}
$seedid = Seed::GetSeedId($dbkey);
$result['dbkey'][] = $seedid;
$str .= "'" . $seedid . "'";
$sql = "INSERT INTO " . $tablename ." (" . $columstr .") VALUES(" .$str .")" ;
try{
self::queryEx($sql);
}
catch(Exception $e)
{
$result['result'] = false;
$result['errormsg'][] = $k;
}
}
return $result;
}
}
‘玖’ 在用phpexcel,windows下可导出表格,linux下无任何反应,无报错
用PHPExcel,PHPExcel是相当强大的 MS Office Excel 文档生成类库。
你上它的官/网把程序包下/载下来,里面有 PHPExcel 的程序、还有30个实例程序和三个文档。
看一下其中的开发文档你就会用了。
读取(这段在开发文档里有的,在13页):
require_once '../Classes/PHPExcel/IOFactory.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();
echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
echo '<tr>' . "\n";
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
echo '<td>' . $cell->getValue() . '</td>' . "\n";
}
echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>
‘拾’ 如何用PHPExcel读取超大excel文件
上一篇文章介绍了php-excel-reader读取excel文件的方法,因为需要,将excel这样的数据: 新建数据库表如下: -- 数据库: `alumni` -- 表的结构 `alumni` CREATE TABLE IF NOT EXISTS `alumni` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `gid` varchar(20) DEFAULT NULL COMMENT '档案编号', `student_no` varchar(20) DEFAULT NULL COMMENT '学号', `name` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`), KEY `gid` (`gid`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 导入后数据库结果如下: php源码如下: 复制代码 代码如下: <?php header("Content-Type:text/html;charset=utf-8"); require_once 'excel_reader2.php'; set_time_limit(20000); ini_set("memory_limit","2000M"); //使用pdo连接数据库 $dsn = "mysql:host=localhost;dbname=alumni;"; $user = "root"; $password = ""; try{ $dbh = new PDO($dsn,$user,$password); $dbh->query('set names utf8;'); }catch(PDOException $e){ echo "连接失败".$e->getMessage(); } //pdo绑定参数操作 $stmt = $dbh->prepare("insert into alumni(gid,student_no,name) values (:gid,:student_no,:name) "); $stmt->bindParam(":gid", $gid,PDO::PARAM_STR); $stmt->bindParam(":student_no", $student_no,PDO::PARAM_STR); $stmt->bindParam(":name", $name,PDO::PARAM_STR); //使用php-excel-reader读取excel内容 $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('UTF-8'); $data->read("stu.xls"); for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { for ($j = 1; $j <= 3; $j++) { $student_no = $data->sheets[0]['cells'][$i][1]; $name = $data->sheets[0]['cells'][$i][2]; $gid = $data->sheets[0]['cells'][$i][3]; } //将获取的excel内容插入到数据库 $stmt->execute(); } echo "执行成功"; echo "最后插入的ID:".$dbh->lastInsertId(); ?> 考虑到excel的量比较大,使用了PDO的绑定操作!