php讀取excel檔案(.csv)執行個體介紹_PHP教程

來源:互聯網
上載者:User
csv檔案是一種純文字檔案,但利用excel檔案開啟可以當作excel檔案使用,下面我來總結幾個常用的讀取excel的php執行個體。

PHP有內建的分析.csv函數:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle 一個由 fopen()、popen() 或 fsockopen() 產生的有效檔案指標。
length (可選)必須大於 CVS 檔案內最長的一行。在 PHP 5 中該參數是可選的。如果忽略(在 PHP 5.0.4 以後的版本中設為 0)該參數的話,那麼長度就沒有限制,不過可能會影響執行效率。
delimiter (可選)設定欄位分界符(只允許一個字元),預設值為逗號。
enclosure (可選)設定欄位環繞符(只允許一個字元),預設值為雙引號。該參數是在 PHP 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 CSV 格式的欄位然後返回一個包含這些欄位的數組。
fgetcsv() 出錯時返回 FALSE,包括碰到檔案結束時。
注意: CSV 檔案中的空行將被返回為一個包含有單個 null 欄位的數組,不會被當成錯誤。

代碼如下 複製代碼

$row = 1;
$handle = fopen("test.csv","r");
while ($data = fgetcsv($handle, 1000, ",")) {
$num = count($data);
echo "
$num fields in line $row:n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "n";
}
}
fclose($handle);
?>

例2

在百度統計和站長工具使用過程中會涉及到很多csv檔案,比如我們下載百度站長工具的404統計資料,直接可以使用以下php指令碼來讀取csv檔案然後更新提交。


php讀取excel檔案(.csv)參考代碼:

代碼如下 複製代碼
function getCSVdata($filename)
{
$row = 1;//第一行開始
if(($handle = fopen($filename, "r")) !== false)
{
while(($dataSrc = fgetcsv($handle)) !== false)
{
$num = count($dataSrc);
for ($c=0; $c < $num; $c++)//列 column
{
if($row === 1)//第一行作為欄位
{
$dataName[] = $dataSrc[$c];//欄位名稱
}
else
{
foreach ($dataName as $k=>$v)
{
if($k == $c)//對應的欄位
{
$data[$v] = $dataSrc[$c];
}
}
}
}
if(!empty($data))
{
$dataRtn[] = $data;
unset($data);
}
$row++;
}
fclose($handle);
return $dataRtn;
}
}

$aData = getCSVdata('all_www.bKjia.c0m .csv');

foreach ($aData as $k=>$v ){
echo "http://".$v['a']."
";
}
?>

PHP自訂類

優點:跨平台。某些類支援寫操作。支援.xls二進位檔案
常用的類有phpExcelReader、PHPExcel。其中後者支援讀寫,但是需要php5.2以上版本。

phpExcelReader是專門用來讀取檔案的。返回一個數組,包含表格的所有內容。
該 class 使用的方法可以參考網站下載回來的壓縮檔中的 example.php。

例3.php資料匯入匯出之excel

上傳cvs並匯入到資料庫中,測試成功(部分代碼不規範,如PHP_SELF那裡要改寫成

代碼如下 複製代碼

$_SERVER["PHP_SELF"] )
PHP代碼
$fname = $_FILES['MyFile']['name'];
$do = copy($_FILES['MyFile']['tmp_name'],$fname);
if ($do)
{
echo"匯入資料成功
";
} else {
echo "";
}
?>

error_reporting(0);
//匯入CSV格式的檔案
$connect=mysql_connect("localhost","a0530093319","123456") or die("could not connect to database");
mysql_select_db("a0530093319",$connect) or die (mysql_error());
$fname = $_FILES['MyFile']['name'];
$handle=fopen("$fname","r");
while($data=fgetcsv($handle,10000,","))
{
$q="insert into test (code,name,date) values ('$data[0]','$data[1]','$data[2]')";
mysql_query($q) or die (mysql_error());
}
fclose($handle);
?>

用php將資料庫匯出成excel,測試完全成功

PHP代碼

代碼如下 複製代碼

$DB_Server = www.bKjia.c0m;//這裡是你的資料連線
$DB_Username = "a0530093319";
$DB_Password = "123456";
$DB_DBName = "a0530093319";
$DB_TBLName = "member";
$savename = date("YmjHis");
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password)
or die("Couldn't connect.");
mysql_query("Set Names 'gb2312'");
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=".$savename.".$file_ending");
header("Pragma: no-cache");
header("Expires: 0");
$now_date = date("Y-m-j H:i:s");
$title = "資料庫名:$DB_DBName,資料表:$DB_TBLName,備份日期:$now_date";
$sql = "Select * from $DB_TBLName";
$ALT_Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldn't select database");
$result = @mysql_query($sql,$Connect)
or die(mysql_error());
echo("$title ");
$sep = " ";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . " ";
}
print(" ");
$i = 0;
while($row = mysql_fetch_row($result)) {
$schema_insert = "";
for($j=0; $jif(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert .= " ";
print(trim($schema_insert));
print " ";
$i++;
}
return (true);
?>

http://www.bkjia.com/PHPjc/632917.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632917.htmlTechArticlecsv檔案是一種純文字檔案,但利用excel檔案開啟可以當作excel檔案使用,下面我來總結幾個常用的讀取excel的php執行個體。 PHP有內建的分析.csv函數...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.