excel導入php源碼
1.先介紹一下這個Excel資料庫的結構,且命名為E.xls,欄位有4個(40個也一樣搞定),欄位名為a,b,c,d,接著對jm.xls做分解:
1)選中欄位a中的全部記錄,選擇"復制"
2)新建一個Excel資料庫文件,把復制過來的數據粘貼在一個空白的欄位(通常是A)下,保證其他欄位空白,保存為a.xls
3)另存a.xls為a.txt(格式為"文本文件(製表符分隔)")
4)E.xls中其他3個欄位的數據按1到3步驟繼續生成b.txt,c.txt和d.txt。
2.完成上述步驟後,你已經完成了大部分的工作,下面就由php和mysql來完成,很簡單:
1)要把數據放在mysql中,必須建立一個mysql資料庫文件名為dbname(與php代碼中的dbname要一致),包括表tbname(與php代碼中的tbname要一致),4個欄位inc char(100),adds char(100),pri char(100),tel char(100),大小要根據Excel中欄位大小做調整,否則可能出現部分值丟失。
2)再編寫php代碼,是最主要的,代碼如下:
------txt2mysql.php---------
<?
$inc=file("a.txt");
$adds=file("b.txt");
$pri=file("c.txt");
$tel=file("d.txt");
$i=0;
mysql_connect();
while (strlen($inc[$i])>0)
{
$sql="insert into tbname values ('$inc[$i]','$adds[$i]','$pri[$i]','$tel[$i]')";
$do=mysql_db_query("dbname",$sql);
$i=$i+1;
echo '<br>';
}
$s="select * from tbname";
$gg=mysql_db_query("dbname",$s);
$n=mysql_num_rows($gg);
mysql_close();
echo '<br>';
echo "共添加了".$n."個記錄";
?>
這種方法很簡單吧!我剛試了一下挺管用的。你稍微改一下,相信能完成!
關鍵在於,如何把excel 中的數據讀取出來,導入是很簡單的事。
分別 把相應的列 另存為,相應的txt。就能得到!然後 以數組的方式讀取。
❷ 在PHP中操作Excel實例代碼
復制代碼
代碼如下:
<?php
//指定頁面編碼,防止出現中文亂碼的情形
header('Content-type:
text/html;
charset=gb2312');
//啟動Excel
$ms_excel=new
COM("excel.application")
or
die("不能打開Excel應用程序");
//在網頁中顯示當前的Excel版本
echo
"Excel版本:{$ms_excel->Version}\n";
//新建一個工作簿
$ms_excel->Application->Workbooks->Add()
or
die("不能添加新工作簿");
//在工作簿的工作表Sheet1中單元格A1中輸入文本
$ms_excel->Worksheets("Sheet1")->Range("A1")->Value="測試";
//保存工作簿,如果沒有指定路徑,則默認保存在我的文檔中
$ms_excel->Workbooks(1)->SaveAs("php_excel_test.xls");
//關閉工作簿
$ms_excel->Quit();
//清空對象
$ms_excel=null;
?>
在htdocs文件夾中將該文件保存為「excelsample.php」。打開瀏覽器,在地址欄中輸入:
http://localhost/excelsample.php
此時,將會在頁面中顯示當前的Excel版本,同時創建名為php_excel_test.xls的工作簿並在工作表Sheet1單元格A1中輸入「測試」。
打開工作簿php_excel_test.xls,在單元格A1中將會看到已經輸入了「測試」。
註:為防止出現亂碼,在代碼開始設置了編碼格式,同時在保存文件時選擇保存為gb2312格式。
❸ PHP如何導入導出Excel
最近在PHP培訓學習過程中,需要開發一個模塊,把系統中的一些數據導出成Excel,修改後再導回系統。就趁機對這個研究了一番,下面進行一些總結。雖然我們在平時用的也有一些,但沒有作者列出來的全,寫excel的時候,我用過pear的庫,也用過pack壓包的頭,同樣那些利用smarty等作的簡單替換xml的也用過,csv的就更不用談了。但是在讀的時候,只用過一種,具體是什麼忘了,要回去翻代碼了。
基本上導出的文件分為兩種:
1:類Excel格式,這個其實不是傳統意義上的Excel文件,只是因為Excel的兼容能力強,能夠正確打開而已。修改這種文件後再保存,通常會提示你是否要轉換成Excel文件。優點:簡單。缺點:難以生成格式,如果用來導入需要自己分別編寫相應的程序。2:Excel格式,與類Excel相對應,這種方法生成的文件更接近於真正的Excel格式。
如果導出中文時出現亂碼,可以嘗試將字元串轉換成gb2312,例如下面就把$yourStr從utf-8轉換成了gb2312:$yourStr = mb_convert_encoding(」gb2312″, 「UTF-8″, $yourStr);
下面詳細列舉幾種方法。
1:利用smarty,生成符合Excel規范的XML或HTML文件支持格式,非常完美的導出方案。不過導出來的的本質上還是XML文件,如果用來導入就需要另外處理了。詳細內容請見rardge大俠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757
需要注意的是如果導出的表格行數不確定時,最好在模板中把」ss:ExpandedColumnCount=」5″ ss:ExpandedRowCount=」21″」之類的東西刪掉。
2、利用pack函數列印出模擬Excel格式的斷句符號,這種更接近於Excel標准格式,用office2003修改後保存,還不會彈出提示,推薦用這種方法。缺點是無格式。
PHP代碼<?php // Send Header 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/octet-stream」); header(」Content-Type: application/download」);; header(」Content-Disposition: attachment;filename=test.xls 「); header(」Content-Transfer-Encoding: binary 「); // XLS Data Cell xlsBOF(); xlsWriteLabel(1,0,」My excel line one」); xlsWriteLabel(2,0,」My excel line two : 「); xlsWriteLabel(2,1,」Hello everybody」); xlsEOF(); function xlsBOF() { echo pack(」ssssss」, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0); return; } function xlsEOF() { echo pack(」ss」, 0×0A, 0×00); return; } function xlsWriteNumber($Row, $Col, $Value) { echo pack(」sssss」, 0×203, 14, $Row, $Col, 0×0); echo pack(」d」, $Value); return; } function xlsWriteLabel($Row, $Col, $Value ) { $L = strlen($Value); echo pack(」ssssss」, 0×204, 8 + $L, $Row, $Col, 0×0, $L); echo $Value; return; } ?> 不過筆者在64位linux系統中使用時失敗了,斷句符號全部變成了亂碼。
3、使用製表符、換行符的方法 製表符」\t」用戶分割同一行中的列,換行符」\t\n」可以開啟下一行。 <?php header(」Content-Type: application/vnd.ms-execl」); header(」Content-Disposition: attachment; filename=myExcel.xls」); header(」Pragma: no-cache」); header(」Expires: 0″); /*first line*/ echo 「hello」.」\t」; echo 「world」.」\t」; echo 「\t\n」; /*start of second line*/ echo 「this is second line」.」\t」; echo 「Hi,pretty girl」.」\t」; echo 「\t\n」;