本文目錄一覽:
- 1、PHP如何將查詢出來的數據導出成excel表格(最好做一個按鈕)?
- 2、php導出excel表後,打包成壓縮包,然後下載到本地如何實現?
- 3、怎麼php導出excel是空白
- 4、php怎麼導出大量數據的Excel
PHP如何將查詢出來的數據導出成excel表格(最好做一個按鈕)?
講的複雜了啊!\x0d\x0a你先在一個完整版的PHPExcel之後解壓,在「Examples」目錄下會找到一大堆例子,根據你的要求這個「01simple-download-xlsx.php」文件就可以了!\x0d\x0a註:你先保持「01simple-download-xlsx.php」文件所在的目錄位置不要變,測試好了,再改變名,移到別的地方,地方變了的話,文件里的 「require_once dirname(__FILE__) . ‘/../Classes/PHPExcel.php’;」的所在位置也要變!\x0d\x0a我們要改動代碼很少,如下:\x0d\x0a// Add some data\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)\x0d\x0a-setCellValue(‘A1’, ‘Hello’)\x0d\x0a-setCellValue(‘B2’, ‘world!’)\x0d\x0a-setCellValue(‘C1’, ‘Hello’)\x0d\x0a-setCellValue(‘D2’, ‘world!’);\x0d\x0a\x0d\x0a// Miscellaneous glyphs, UTF-8\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)\x0d\x0a-setCellValue(‘A4’, ‘Miscellaneous glyphs’)\x0d\x0a-setCellValue(‘A5’, ‘éàèùâêîôûëïüÿäöüç’);\x0d\x0a、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\x0d\x0a直接用的我的替換\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)//這個就是現實導出的表第一行,有幾列是根據你的那張表有幾列!\x0d\x0a-setCellValue(‘A1’, ‘單號’)\x0d\x0a-setCellValue(‘B1’, ‘標題’)\x0d\x0a-setCellValue(‘C1’, ‘內容’)\x0d\x0a-setCellValue(‘D1’, ‘序列’)\x0d\x0a-setCellValue(‘E1’, ‘數字’);\x0d\x0a//下面實現的就是建立資料庫連接,直接到表,你的連接資料庫、表、欄位應該與我的不一樣,你可以參考\x0d\x0a$conn=@mysql_connect(“localhost”,”root”,”root”) or die(“資料庫伺服器連接錯誤”.mysql_error());//連接mysql資料庫\x0d\x0amysql_select_db(“temp”,$conn) or die(“資料庫訪問錯誤”.mysql_error());//資料庫\x0d\x0amysql_query(“set character set gb2312”);\x0d\x0amysql_query(“set names gb2312”);\x0d\x0a\x0d\x0a$sqlgroups=”select * from test “;//查詢這一張表的條件\x0d\x0a$resultgroups=mysql_query($sqlgroups);\x0d\x0a$numrows=mysql_num_rows($resultgroups);\x0d\x0aif ($numrows0)\x0d\x0a{\x0d\x0a$count=1;\x0d\x0awhile($data=mysql_fetch_array($resultgroups))\x0d\x0a{\x0d\x0a$count+=1;\x0d\x0a$l1=”A”.”$count”;\x0d\x0a$l2=”B”.”$count”;\x0d\x0a$l3=”C”.”$count”;\x0d\x0a$l4=”D”.”$count”;\x0d\x0a$l5=”E”.”$count”;\x0d\x0a$objPHPExcel-setActiveSheetIndex(0) \x0d\x0a-setCellValue($l1, $data[‘id’])//這就是你要導出表的欄位、與對應的名稱\x0d\x0a-setCellValue($l2, $data[‘title’])\x0d\x0a-setCellValue($l3, $data[‘content’])\x0d\x0a-setCellValue($l4, $data[‘sn’])\x0d\x0a-setCellValue($l5, $data[‘num’]);\x0d\x0a}\x0d\x0a}
php導出excel表後,打包成壓縮包,然後下載到本地如何實現?
用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”;
?
怎麼php導出excel是空白
你要給出的代碼來才能找出問題啊,不夠給一個例子給你看看。
下面有幾種方法。
基本上導出的文件分為兩種:
1:類Excel格式,這個其實不是傳統意義上的Excel文件,只是因為Excel的兼容能力強,能夠正確打開而已。修改這種文件後再保存,通常會提示你是否要轉換成Excel文件。
優點:簡單。
缺點:難以生成格式,如果用來導入需要自己分別編寫相應的程序。
2:Excel格式,與類Excel相對應,這種方法生成的文件更接近於真正的Excel格式。
如果導出中文時出現亂碼,可以嘗試將字元串轉換成gb2312,例如下面就把$yourStr從utf-8轉換成了gb2312:
$yourStr = mb_convert_encoding(“gb2312”, “UTF-8”, $yourStr);
一、PHP導入Excel
1:還是用PHPExcel,官方網站: 。
2:使用PHP-ExcelReader,下載地址:
舉例:
?php
require_once ‘Excel/reader.php’;
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data-setOutputEncoding(‘utf8’);
$data-read(‘ jxlrwtest.xls’);
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i = $data-sheets[0][‘numRows’]; $i++) {
for ($j = 1; $j = $data-sheets[0][‘numCols’]; $j++) {
echo “””.$data-sheets[0][‘cells’][$i][$j].””,”;
}
echo “\n”;
}
?
總結 php導出Excel php導入Excel PhpExcel使用說明 PhpExcel使用手冊
方法一:特點,簡單,省心,製表符”\t”用戶分割同一行中的列,換行符”\t\n”可以開啟下一行,還能夠自動識別日期格式,貨幣格式等!
?php
header(“Content-type:application/vnd.ms-excel”);
header(“Content-Disposition:attachment;filename=test_data.xls”);
//輸出內容如下:
echo “姓名”.”\t”;
echo “年齡”.”\t”;
echo “學歷”.”\t”;
echo “\n”;
echo “張三”.”\t”;
echo “25”.”\t”;
echo “本科”.”\t”;
?
動態版
?
$sql = “SELECT * FROM ” .$ecs-table(‘member’). ” “;
$classres = $db-Execute($sql);
header(“Content-type:application/vnd.ms-excel”);
header(“Content-Disposition:attachment; filename=test_data.xls”);
echo ‘ID’.chr(9);
echo ‘txtPEOClientCode’.chr(9);
echo ‘jcompany’.chr(9);
echo ‘fcompany’.chr(9);
echo ‘ecompany’.chr(9);
echo ‘rcompany’.chr(9);
echo ‘txtAddress’.chr(9);
echo ‘txtCompanyTel’.chr(9);
echo ‘txtFax’.chr(9);
echo ‘txtPostCode’.chr(9);
echo chr(13);
while ($classrow = $classres-FetchRow())
{
//輸出到xls
echo $classrow[‘id’].chr(9);
echo $classrow[‘txtPEOClientCode’].chr(9);
echo $classrow[‘jcompany’].chr(9);
echo $classrow[‘fcompany’].chr(9);
echo $classrow[‘ecompany’].chr(9);
echo $classrow[‘rcompany’].chr(9);
echo $classrow[‘txtAddress’].chr(9);
echo $classrow[‘txtCompanyTel’].chr(9);
echo $classrow[‘txtFax’].chr(9);
echo $classrow[‘txtPostCode’].chr(9);
echo chr(13);
}
現在用的Php-excel(),代碼也很簡單:
require (dirname (__FILE__) . “./class-excel-xml.inc.php”);
$sql = “SELECT * FROM ” .$ecs-table(‘member’). ” “;
$classres = $db-Execute($sql);
while($classrow = $classres-FetchRow())
{
$doc[] = array ($classrow[‘txtPEOClientCode’], $classrow[‘jcompany’], $classrow[‘txtBillTo’]);
}
$xls = new Excel_XML;
$xls-addArray($doc);
$xls-generateXML(“mytest”);
我用的utf-8,結果有亂碼問題,把class-excel-xml.inc.php utf8_encode($v) 替換成$v就沒有亂碼問題了。
1:第一推薦無比風騷的PHPExcel,官方網站:
導入導出都成,可以導出office2007格式,同時兼容2003。
下載下來的包中有文檔和例子,大家可以自行研究。
抄段例子出來:
?php
ini_set(“display_errors”,1);//是否顯示報錯信息
ini_set(‘include_path’, ini_get(‘include_path’).’;D:\\PHP\\PHPExcel 1.6.6\\Tests\\classes\\’);//設置此頁面包含路徑
include “classes/PHPExcel.php”;
include “classes/PHPExcel/Writer/Excel5.php”;
//創建一個excel
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter-save(“xxx.xls”);
?
————————————————————————————–
?
//設置PHPExcel類庫的include path
set_include_path(‘.’. PATH_SEPARATOR .’D:\workspace\biznaligy_eh\dev_src\includes\PHPExcel’ . PATH_SEPARATOR . get_include_path());
require_once ‘PHPExcel.php’;
require_once ‘PHPExcel/Writer/Excel5.php’; // 用於其他低版本xls
require_once ‘PHPExcel/Writer/Excel2007.php’; // 用於 excel-2007 格式
// 創建一個處理對象實例
$objExcel = new PHPExcel();
// 創建文件格式寫入對象實例, uncomment
$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用於其他版本格式
//or
//$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用於 2007 格式
//$objWriter-setOffice2003Compatibility(true);
//設置文檔基本屬性
$objProps = $objExcel-getProperties();
$objProps-setCreator(“Zeal Li”);
$objProps-setLastModifiedBy(“Zeal Li”);
$objProps-setTitle(“Office XLS Test Document”);
$objProps-setSubject(“Office XLS Test Document, Demo”);
$objProps-setDescription(“Test document, generated by PHPExcel.”);
$objProps-setKeywords(“office excel PHPExcel”);
$objProps-setCategory(“Test”);
//設置當前的sheet索引,用於後續的內容操作。
//一般只有在使用多個sheet的時候才需要顯示調用。
//預設情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0
$objExcel-setActiveSheetIndex(0);
$objActSheet = $objExcel-getActiveSheet();
//設置當前活動sheet的名稱
$objActSheet-setTitle(‘測試Sheet’);
//設置單元格內容
//由PHPExcel根據傳入內容自動判斷單元格內容類型
$objActSheet-setCellValue(‘A1’, ‘字元串內容’); // 字元串內容
$objActSheet-setCellValue(‘A2’, 26); // 數值
$objActSheet-setCellValue(‘A3’, true); // 布爾值
$objActSheet-setCellValue(‘A4’, ‘=SUM(A2:A2)’); // 公式
//顯式指定內容類型
$objActSheet-setCellValueExplicit(‘A5’, ‘847475847857487584’, PHPExcel_Cell_DataType::TYPE_STRING);
//合併單元格
$objActSheet-mergeCells(‘B1:C22’);
//分離單元格
$objActSheet-unmergeCells(‘B1:C22’);
//設置單元格樣式
//設置寬度
$objActSheet-getColumnDimension(‘B’)-setAutoSize(true);
$objActSheet-getColumnDimension(‘A’)-setWidth(30);
$objStyleA5 = $objActSheet-getStyle(‘A5’);
//設置單元格內容的數字格式。
//如果使用了 PHPExcel_Writer_Excel5 來生成內容的話,
//這裡需要注意,在 PHPExcel_Style_NumberFormat 類的 const 變數定義的
//各種自定義格式化方式中,其它類型都可以正常使用,但當setFormatCode
//為 FORMAT_NUMBER 的時候,實際出來的效果被沒有把格式設置為”0″。需要
//修改 PHPExcel_Writer_Excel5_Format 類源代碼中的 getXf($style) 方法,
//在 if ($this-_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代碼:
//if($ifmt === ‘0’) $ifmt = 1;
//設置格式為PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大數字
//被使用科學記數方式顯示,配合下面的 setAutoSize 方法可以讓每一行的內容
//都按原始內容全部顯示出來。
$objStyleA5 -getNumberFormat()-setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//設置字體
$objFontA5 = $objStyleA5-getFont();
$objFontA5-setName(‘Courier New’);
$objFontA5-setSize(10);
$objFontA5-setBold(true);
$objFontA5-setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5-getColor()-setARGB(‘FF999999’);
//設置對齊方式
$objAlignA5 = $objStyleA5-getAlignment();
$objAlignA5-setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5-setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//設置邊框
$objBorderA5 = $objStyleA5-getBorders();
$objBorderA5-getTop()-setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5-getTop()-getColor()-setARGB(‘FFFF0000’); // color
$objBorderA5-getBottom()-setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5-getLeft()-setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5-getRight()-setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//設置填充顏色
$objFillA5 = $objStyleA5-getFill();
$objFillA5-setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5-getStartColor()-setARGB(‘FFEEEEEE’);
//從指定的單元格複製樣式信息.
$objActSheet-duplicateStyle($objStyleA5, ‘B1:C22’);
//添加圖片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing-setName(‘ZealImg’);
$objDrawing-setDescription(‘Image inserted by Zeal’);
$objDrawing-setPath(‘./zeali.net.logo.gif’);
$objDrawing-setHeight(36);
$objDrawing-setCoordinates(‘C23’);
$objDrawing-setOffsetX(10);
$objDrawing-setRotation(15);
$objDrawing-getShadow()-setVisible(true);
$objDrawing-getShadow()-setDirection(36);
$objDrawing-setWorksheet($objActSheet);
//添加一個新的worksheet
$objExcel-createSheet();
$objExcel-getSheet(1)-setTitle(‘測試2’);
//保護單元格
$objExcel-getSheet(1)-getProtection()-setSheet(true);
$objExcel-getSheet(1)-protectCells(‘A1:C22’, ‘PHPExcel’);
//輸出內容
$outputFileName = “output.xls”;
//到文件
////$objWriter-save($outputFileName);
//or
//到瀏覽器
header(“Content-Type: application/force-download”);
header(“Content-Type: application/octet-stream”);
header(“Content-Type: application/download”);
header(‘Content-Disposition:inline;filename=”‘.$outputFileName.'”‘);
header(“Content-Transfer-Encoding: binary”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);
header(“Pragma: no-cache”);
$objWriter-save(‘php://output’);
?
php怎麼導出大量數據的Excel
微軟的Excel設置單元格行數默認是6萬行rows,相對的講其實當我們超過1萬行的時候已經是大數據的導出。
好比:有客戶10000人,平均每人每天產生10條活動記錄,要導出上周所有的客戶活動記錄: 10000*10*7=700000
估計看70萬行的Excel這個人會瘋掉的,我們的建議是分批次導出,按時間導出到不同的excel
下面是一個PHPExcel官方的Demo(已修改過)
複製代碼
define(‘EOL’, ‘br /’);
$objPHPExcel = new \app\extensions\PHPExcel\PHPExcel();
ini_set(“memory_limit”, “1024M”); // 設置php可使用內存
$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
if (!\PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) {
die($cacheMethod . ” 緩存方法不可用” . EOL);
}
echo date(‘H:i:s’), ” 當前使用的緩存方法是: “, $cacheMethod, ” 方式”, EOL;
echo date(‘H:i:s’), ” 開始設置文檔屬性”, EOL;
$objPHPExcel-getProperties()-setCreator(“Maarten Balliauw”)
-setLastModifiedBy(“Maarten Balliauw”)
-setTitle(“Office 2007 XLSX Test Document”)
-setSubject(“Office 2007 XLSX Test Document”)
具體的還有很多寫不下,我是在後盾人看的教學視頻無意中學到的,正好解答給你希望能幫到你
原創文章,作者:ZWJC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141742.html