php操作excel
① php 讀取excel
有一個簡便的方法 將數據輸出到網頁的table標簽裡面 然後改變header頭為excel
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=文件名稱.xls");
正式點的
前端使用bootstrapTable插件導出excel
後端PHP使用PHPEXCEL插件
② php怎麼導出大量數據的Excel
php導出大量數據Excel的具體操作步驟如下:
③ 怎麼使用php把表格中的數據導入到excel中
下面是我寫的一個PHP導出數據到CSV問價的函數,你到時候直接調用就行了
/**
*導出CSV文件
*@paramstring$fileName 文件名字
*@paramstring|array$data導出數據,csv格式的字元串|數值數組
*@paramstring$to_encoding目標轉換編碼
*@paramstring$from_encoding當前編碼
*/
functionexportCSV($fileName='',$data='',$to_encoding='gb2312',$from_encoding='utf-8'){
$fileName=empty($fileName)?date('YmdHis'):$fileName;
//文件標簽
Header("Content-type:application/octet-stream");
header("Content-type:application/vnd.ms-excel;charset=$from_encoding");
Header("Content-Disposition:attachment;filename=$fileName.csv");
$str='';
if($data){
if(is_array($data)){
foreach($dataas$v){
if(is_array($v)){
foreach($vas$vo){
$str.=(is_numeric($vo)?"'".$vo:$vo."").",";
}
$str=trim($str,",")." ";
}else{
$str.=(is_numeric($v)?"'".$v:$v).",";
}
}
$str=trim($str,",")." ";
}else{
$str=$data;
}
}
echomb_convert_encoding($str,"gb2312","utf-8");
exit;
}
④ PHP Excel大批量導入崩潰怎麼辦
項目需要批量導入excel文件,如果裡面有重復的數據要怎麼處理呢?每插入一次數據都要到資料庫查詢么?
回復內容:
項目需要批量導入excel文件,如果裡面有重復的數據要怎麼處理呢?每插入一次數據都要到資料庫查詢么?
1、如果裡面有重復的數據要怎麼處理呢?
1
<code>可以先判斷資料庫是否有該數據。</code>
2、每插入一次數據都要到資料庫查詢么
1
<code>是的。</code>
先去重得到沒有重復的數據,再批量插入資料庫。也可以嘗試MYsql中的insert ignore into或 replace into
如果查詢比較慢,對不能重復的欄位加唯一鍵,然後用INSERT IGNORE INTO
php批量導入數據出錯
我現在要做的是,把一個產品數據從EXCEL中導入到PHP的MYSQL中,導入的過程中,總是會提示「Allowed memory size of 167772160 bytes exhausted (tried to allocate 689919 bytes) in D:\wamp\www\Company\proct\admin\uploadOrder.php on line 167」這個錯誤,然後我分成第100條導入時,就不會提示這個錯誤,這個是不是內存溢出,有沒有好的解決方法呢?
------解決方案--------------------
php.ini中講memory_limit選項設置大一點,然後重啟apache或nginx就行了
------解決方案--------------------
文件太大了,這樣的話可以用source命令直接導入!
------解決方案--------------------
⑤ 如何用php讀取Exce表中的多個sheet
:php讀取excel,excel下多個個工作表的方法: 1、利用PHPExcelReader來完成多個excel的讀齲 2、PHPExcel比較強大,能夠將內存中的數據輸出成Excel文件,同時還能夠對Excel做各種操作,下面主要介紹下如何使用PHPExcel進行Excel 2007格式
⑥ 利用php導入excel文件
【步驟1】在前台html頁面進行上傳文件
<formmethod="post"action="php文件"enctype="multipart/form-data">
<h3>導入Excel表:</h3><inputtype="file"name="file_stu"/>
<inputtype="submit"value="導入"/>
</form>
【步驟2】在對應的php文件進行文件的處理
if(!empty($_FILES['file_stu']['name']))
{$tmp_file=$_FILES['file_stu']['tmp_name'];$file_types=explode(".",$_FILES['file_stu']['name']);$file_type=$file_types[count($file_types)-1];
/*判別是不是.xls文件,判別是不是excel文件*/if(strtolower($file_type)!="xls"){$this->error('不是Excel文件,重新上傳');}
/*設置上傳路徑*/$savePath=SITE_PATH.'/public/upfile/Excel/';
/*以時間來命名上傳的文件*/$str=date('Ymdhis');$file_name=$str.".".$file_type;
/*是否上傳成功*/if(!($tmp_file,$savePath.$file_name)){$this->error('上傳失敗');}
/*
*對上傳的Excel數據進行處理生成編程數據,這個函數會在下面第三步的ExcelToArray類中
注意:這里調用執行了第三步類裡面的read函數,把Excel轉化為數組並返回給$res,再進行資料庫寫入
*/$res=Service('ExcelToArray')->read($savePath.$file_name);
/*
重要代碼 解決Thinkphp M、D方法不能調用的問題
如果在thinkphp中遇到M 、D方法失效時就加入下面一句代碼
*/
//spl_autoload_register(array('Think','autoload'));
/*對生成的數組進行資料庫的寫入*/
foreach($resas$k=>$v){if($k!=0){$data['uid']=$v[0];$data['password']=sha1('111111');$data['email']=$v[1];
$data['uname']=$v[3];
$data['institute']=$v[4];$result=M('user')->add($data);if(!$result){$this->error('導入資料庫失敗');}}}
}
【步驟3】ExcelToArrary類,用來引用phpExcel並處理Excel數據的
{
publicfunction__construct(){
/*導入phpExcel核心類注意:你的路徑跟我不一樣就不能直接復制*/include_once('./Excel/PHPExcel.php');}
/**
* 讀取excel $filename 路徑文件名 $encode 返回數據的編碼 默認為utf8
*以下基本都不要修改
*/
publicfunctionread($filename,$encode='utf-8'){
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load($filename);
$objWorksheet=$objPHPExcel->getActiveSheet();
$highestRow=$objWorksheet->getHighestRow();$highestColumn=$objWorksheet->getHighestColumn();$highestColumnIndex=PHPExcel_Cell::columnIndexFromString($highestColumn);$excelData=array();for($row=1;$row<=$highestRow;$row++){for($col=0;$col<$highestColumnIndex;$col++){$excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();}}return$excelData;
}
}
⑦ php讀取excel,excel下多個個工作表,該怎麼讀取
php有個PHPExcel擴展,是可以實現你的要求的。
我這里有個可以讀取多個工作薄的自定義excel類,試試看:
<?php
/**
*excel.class.php
*/
class Excel
{
/**
* 從excel文件中取得所有數據。並轉換成指定編碼格式。
* $toCode 表示需要轉換成的編碼格式,目前擴充了utf8,gbk2312,html三種格式。
* @return 返回二維數組。
*/
static function getDataFromExl($filePath,$toCode = "utf8")
{
$fh = @fopen($filePath,'rb');
if( !$fh || filesize($filePath)==0 )
{
return -1; //文件不可讀或者為空
}
$fc = fread( $fh, filesize($filePath) );
@fclose($fh);
if( strlen($fc) < filesize($filePath) )
{
return -2; //讀取錯誤
}
$exc = new ExcelFileParser();
$res = $exc->ParseFromString($fc);
$ws_number = count($exc->worksheet['name']);//取得工作薄數量
if( $ws_number < 1 )
{
return -3;
}
for ($ws_n = 0; $ws_n < $ws_number; $ws_n++)
{
$ws = $exc -> worksheet['data'][$ws_n];
$data = $ws['cell'];
foreach($data as $k=>$v) //一行數據
{
$row = null;
foreach($v as $a=>$d) //一行數據的一個位元組
{
$value = null;
if(count($d) == 1)
{
continue;
}
if($d['type'] == 0) //如果是字元類型則轉換成為指定編碼格式
{
$ind = $d['data'];
if( $exc->sst['unicode'][$ind] ) //返回數據編碼格式
{
switch($toCode)
{
case "utf8":
$s = Strings::uc2utf8($exc->sst['data'][$ind]);
break;
case "gbk":
$s = Strings::uc2gbk($exc->sst['data'][$ind]);
break;
case "html":
$s = Strings::uc2html($exc->sst['data'][$ind]);
break;
default:
$s = Strings::uc2utf8($exc->sst['data'][$ind]);
break;
}
}
else
{
$s = $exc->sst['data'][$ind];
}
if( strlen(trim($s))==0 || $s === null )
{
$value = '';
}
else
{
$value = $s;
}
}
elseif($d['type'] == 3)
{
$time_list = explode('.', $d['data']);
$time_format = $time_list[2].'-'.$time_list[0].'-'.$time_list[1];
$timestamp = strtotime($time_format);
$value = date("Y-m-d H:i:s", $timestamp);
}
else
{
$value = $d['data'];
}
$row[$a] = $value;
}
$recordList[] = $row;
}
}
return $recordList;
}
}
require_once('./excel.class.php');
$emailData = Excel::getDataFromExl($_FILES['file_name']['tmp_name']);
⑧ php中如何將execl的數據導入到資料庫中
1.使用PHP
Excel
Parser
Pro軟體,但是這個軟體為收費軟體;
2.可將EXCEL表保存為CSV格式,然後通過
phpmyadmin
或者SQLyog導入,SQLyog導入的方法為:
·將EXCEL表另存為CSV形式;
·打開SQLyog,對要導入的表格
右擊
,點擊「導入」-「導入使用載入本地CSV數據」;
·在彈出的對話框中,點擊「改變..」,把選擇「填寫excel友好值」,點擊確定;
·在「從文件導入」中選擇要導入的CSV文件路徑,點擊「導入」即可導入數據到表上;
3.一個比較笨的手工方法,就是先利用excel生成
sql語句
,然後再到mysql中運行,這種方法適用於
excel表格
導入到各類
sql資料庫
:
·假設你的表格有A、B、C三
列數據
,希望導入到你的資料庫中表格tablename,對應的欄位分別是col1、col2、col3
·在你的表格中增加一列,利用excel的公式自動生成sql語句,具體方法如下:
1)增加一列(假設是D列)
2)在第一行的D列,就是D1中輸入公式:
=CONCATENATE("insert
into
tablename
(col1,col2,col3)
values
(",A1,",",B1,",",C1,");")
3)此時D1已經生成了如下的sql語句:
insert
into
table
(col1,col2,col3)
values
('a','11','33');
4)將D1的公式復制到所有行的D列(就是用滑鼠點住D1單元格的右下角一直拖拽下去啦)
5)此時D列已經生成了所有的sql語句
6)把D列復制到一個純文本文件中,假設為sql.txt
·把sql.txt放到資料庫中運行即可,你可以用命令行導入,也可以用phpadmin運行。
⑨ php怎麼讀取excel 文件數據並輸出
PHPExcel
PHPExcel是用來操作Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標准和PHP語言。可以使用它來讀取、寫入不同格式的電子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。
PHP讀取示例代碼
//獲取上傳的excel臨時文件
$path=$_FILES["file"]["tmp_name"];
//將臨時文件移動當前目錄,可自定義存儲位置
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
//將獲取在伺服器中的Excel文件,此處為上傳文件名
$path=$_FILES["file"]["name"];
//調用readExcel函數返回一個
二維數組
$exceArray=readExcel($path);
//創建一個讀取
excel函數
functionreadExcel($path){
//引入PHPExcel類庫
include'Classes/PHPExcel.php';
include'Classes/PHPExcel/IOFactory.php';
$type='Excel5';//設置為Excel5代表支持2003或以下版本,
Excel2007代表2007版
$xlsReader=PHPExcel_IOFactory::createReader($type);
$xlsReader->setReadDataOnly(true);
$xlsReader->setLoadSheetsOnly(true);
$Sheets=$xlsReader->load($path);
//開始讀取上傳到伺服器中的Excel文件,返回一個
二維數組
$dataArray=$Sheets->getSheet(0)->
toArray();
return$dataArray;
}
⑩ PHP遠程讀取excel文件,怎麼讀取
PHPExcel 通過 PHPExcel_Shared_OLERead 類的 read 方法讀取文件
但 read 方法里使用了 is_readable 函數來確認文件是否存在,而 is_readable 不能作用於 url
所以不可直接遠程讀取
但若繞過 is_readable 函數的話,就是可以的
public function read($sFileName)
{
// Check if file exists and is readable
if(!is_readable($sFileName)) {
throw new Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable.");
}
// Get the file data
$this->data = file_get_contents($sFileName);