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的綁定操作!