⑴ 基于php中使用excel的简单介绍
在工作中需要处理多语言的翻译问题,翻译都是写在excel表格里面。为了处理方便我就保留中文和英文两列。
这样需要将这些数据从excel中取出来,然乎保存在excel的数组中,通过使用循环数组将相应的数据放入到数据库中。
所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel.
该项目的详细信息
http://phpexcel.codeplex.com/
。
我目前使用的是phpexcel1.7.3版本,
解压缩后里面有一个PHPExcel和PHPExcel.php文件。
我们主要使用那个PHP文件。见下图文件目录结构
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持。于是乎我就将它转化为2003。感觉支持地很好。
下面介绍一下具体的使用:
复制代码
代码如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$php_excel_obj
=
new
PHPExcel();
$php_reader
=
newPHPExcel_Reader_Excel2007();
if(!$php_reader->canRead($file_name)){
$php_reader=
new
PHPExcel_Reader_Excel5();
if(!$php_reader->canRead($file_name)){
echo'NO
Excel!'
}
}
$php_excel_obj
=
$php_reader->load($file_name);
$current_sheet
=$php_excel_obj->getSheet(0);
上面的主要功能是初始化相关的excel类,并装载excel第一个sheet
复制代码
代码如下:
$all_column
=$current_sheet->getHighestColumn();
$all_row
=$current_sheet->getHighestRow();
以上分别获得该表格的最大列值(字母表示如:‘G'),和最大的行数(数值表示)
下面将使用循环来讲excel里面的数据读到excel中:
复制代码
代码如下:
$all_arr
=
array();
$c_arr
=
array();
//字符对照表
for($r_i
=
1;
$r_i<=$all_row;
$r_i++){
$c_arr=
array();
for($c_i=
'A'
$c_i<=
'B'
$c_i++){
$adr=
$c_i
.
$r_i;
$value=
$current_sheet->getCell($adr)->getValue();
if($c_i==
'A'
&&
empty($value)
)
break;
if(is_object($value))
$value=
$value->__toString();
$c_arr[$c_i]=
$value;
}
$c_arr&&
$all_arr[]
=
$c_arr;
}
下面简单地介绍一下phpexcel的写操作,这个操作经常用于将数据库中的数据导入到excel中,便于展示和做成更美观的效果。
复制代码
代码如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$excel_obj
=
new
PHPExcel();
$objWriter
=
newPHPExcel_Writer_Excel5($excel_obj);
$excel_obj->setActiveSheetIndex(0);
$act_sheet_obj=$excel_obj->getActiveSheet();
$act_sheet_obj->setTitle('sheet');
$act_sheet_obj->setCellValue('A1',
'字符串内容');
$act_sheet_obj->setCellValue('A2',
26);
$file_name
=
"output.xls";
$objWriter->save($file_name);
代码很简单,
首先初始化相关的excel写类,然后写入数据,最后保存为xls文件。
输出的效果见图
⑵ PHP鎴栬卝s镐庝箞瀹炵幇excel鍦ㄧ嚎棰勮
PHPExcelReader姣旇缉杞婚噺绾э纴浠呮敮鎸丒xcel镄勮诲彇锛屽疄闄呬笂灏辨槸涓涓猂eader銆备絾鏄鍙𨱍灭殑鏄涓嶈兘澶熸敮鎸丒xcel 2007镄勬牸寮忥纸.xlsx锛
PHPExcel姣旇缉寮哄ぇ锛岃兘澶熷皢鍐呭瓨涓镄勬暟鎹杈揿嚭鎴怑xcel鏂囦欢锛屽悓镞惰缮鑳藉熷笶xcel锅氩悇绉嶆搷浣滐纴涓嬮溃涓昏佷粙缁崭笅濡备綍浣跨敤PHPExcel杩涜孍xcel 2007镙煎纺锛.xlsx锛夋枃浠剁殑璇诲彇銆
涓嬭浇PHPExcel钖庝缭瀛桦埌镊宸辩殑绫绘枃浠剁洰褰曚腑锛岀劧钖庝娇鐢ㄤ互涓嬩唬镰佸彲浠ユ墦寮Excel 2007锛坸lsx锛夋牸寮忕殑鏂囦欢锛
<?php
require_once '/libs/PHPExcel-1.8.0/Classes/PHPExcel.php'; //淇鏀逛负镊宸辩殑鐩褰
echo '<p>TEST PHPExcel 1.8.0: read xlsx file</p>';
$objReader = PHPExcel_IOFactory::createReaderForFile($filename);
$objPHPExcel = $objReader->load($filename);
$objPHPExcel->setActiveSheetIndex(1);
$date = $objPHPExcel->getActiveSheet()->getCell('A16')->getValue();
?>
杈揿嚭$date鍙橀噺灏辫兘澶熺湅鍒版枃浠朵腑镄勫唴瀹逛简銆侾HPExcel浣跨敤PHPExcel_IOFactory杩欎釜绫绘潵镊锷ㄥ尮閰嶆墍涓娄紶镄勬枃浠剁被鍨嬶纴褰撶劧鎴戜滑涔熷彲浠ヨ嚜宸卞埗瀹氲佽В鏋愮殑鏂囦欢绫诲瀷銆备箣钖庨氲繃load鏂规硶锛屽皢PHP鏂囦欢锷犺浇鍒皁bjPHPExcel瀵硅薄涓銆傚傛灉Excel鏂囦欢链夊氢釜Sheet锛屽彲浠ラ氲繃setActiveSheetIndex𨱒ヨ剧疆褰揿墠娲诲姩镄凷heet銆傚备綍阃氲繃Sheet钖嶆潵銮峰缑褰揿墠Sheet鎴戣缮涓岖煡阆掳纴濡傛灉链夌煡阆撶殑鍙浠ョ珯鍐呮垜銆
闇瑕佹敞镒忕殑鏄锛屽逛簬Excel涓镄勬棩链熸牸寮忥纴PHPExcel璇诲嚭𨱒ョ殑鏄涓嶆槸镞ユ湡绫诲瀷锛岄渶瑕佹垜浠浣跨敤浠ヤ笅鏂规硶𨱒ヨ繘琛屾棩链熺被鍨嬭浆鎹銆
echo date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($date));
涓嬮溃镄勪唬镰佹樉绀轰简濡备綍阆嶅巻鏄剧ずExcel镄勫唴瀹癸细
<table id="table_id">
<?php
$objWorksheet = $objPHPExcel->getActiveSheet();
$i = 0;
foreach($objWorksheet->getRowIterator() as $row){
?>
<tr>
<?php
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
if( $i == 0 ){
echo '<thead>';
}
foreach($cellIterator as $cell){
echo '<td>' . $cell->getValue() . '</td>';
}
if( $i == 0 ){
echo '</thead>';
}
$i++;
?>
</tr>
<?php
}
?>
</table>
⑶ 𨱍抽梾涓狿HP镎崭綔EXCEL镄勯梾棰樸伞伞
灏$Workbook->saveas($url);鏀逛负
$Workbook->save();
璇曡瘯
鐪嬬绣涓娄竴鑸鐢 PHPExcel镎崭綔 Excel鏂囦欢锛
鍙傝冿细
http://wenku..com/link?url=OQaFbS_Ru2sQukfuqaugfzlPMaB-niOg1vt7C
⑷ php生成excel完整实例代码
下载phpexcel类库 代码如下:
<?php
require_once('PHPExcel.php');
require_once('PHPExcel/IOFactory.php');
$objPHPExcel=new PHPExcel();
$iofactory=new IOFactory();
//获得数据 ---一般是从数据库中获得数据
$data=array(
0=>array('id'=>2013,'name'=>'张某某','age'=>21),
1=>array('id'=>201,'name'=>'EVA','age'=>21)
);
//设置excel列名
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','编号');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1','姓名');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1','年龄');
//把数据循环写入excel中
foreach($data as $key => $value){
$key+=2;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$key,$value['id']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$key,$value['name']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$key,$value['age']);
}
//excel保存在根目录下 如要导出文件,以下改为注释代码
$objPHPExcel->getActiveSheet() -> setTitle('SetExcelName');
$objPHPExcel-> setActiveSheetIndex(0);
$objWriter = $iofactory -> createWriter($objPHPExcel, 'Excel2007');
$objWriter -> save('SetExcelName.xlsx');
//导出代码
// $objPHPExcel->getActiveSheet() -> setTitle('SetExcelName');
// $objPHPExcel-> setActiveSheetIndex(0);
// $objWriter = $iofactory -> createWriter($objPHPExcel, 'Excel2007');
// $filename = 'SetExcelName.xlsx';
// header('Content-Type: application/vnd.ms-excel');
// header('Content-Type: application/octet-stream');
// header('Content-Disposition: attachment; filename="' . $filename . '"');
// header('Cache-Control: max-age=0');
// $objWriter -> save('php://output');
?>
⑸ php怎么读取excel 文件数据并输出
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导入,并添加数据到数据库.
我用的代码是:
<?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for ($i=0;$i <count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功导入数据!";
}
echo $string[4]."\n";
unset($string);
}
?>
--------------------------------------------------------------------------------
phpexcel或者pear的一个组件 ,国内有一个excelclass的插件
都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader
phpexcel比较费资源,不过并不是所有的excel都能读取
楼主可以到这里去看看 pear.php.net
--------------------------------------------------------------------------------
顶楼上的回答~~顺便接个分!嘿嘿
--------------------------------------------------------------------------------
AdO直接上传
注意有些字符mysql或ADO可能不支持
--------------------------------------------------------------------------------
首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv 打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
然后完了。
⑺ PHP鐢熸垚Excel鎶ヨ〃镄勬柟娉
PHP鐢熸垚Excel鎶ヨ〃
?php
$path = '/usr/share/pear'; // 浣犺嚜瀹氢箟镄 PEAR 璺寰
set_include_path(get_include_path() . PATH_SEPARATOR . $path); // 璁剧疆 PHP 鐜澧冨彉閲忚矾寰勪负闄 php.ini 榛樿ょ殑浠ュ, 鍐嶅姞涓娄綘镊瀹氢箟镄 PEAR 璺寰
require '/usr/share/pear/Spreadsheet/Excel/Writer.php'; // 鍖呭惈 PEAR::Spreadsheet_Excel_Writer 绫绘枃浠
$name = 'atyu30';
$work = $_POST['file_body'];
$num = '10';
$filename = $_POST['file_name'];
$name_suffix01 = '_鎶ュ憡.xls';
$name_suffix02 = iconv('utf-8','gb2312',$name_suffix01);
$workbook = new Spreadsheet_Excel_Writer(); // 瀹炰緥鍖 PEAR::Spreadsheet_Excel_Writer 绫
$workbook-send($filename.$name_suffix02); // 鍙戦 Excel 鏂囦欢钖崭緵涓嬭浇
$workbook-setVersion(8);
$worksheet = $workbook-addWorksheet('sheet-1'); // 锷犲叆涓涓宸ヤ綔琛 sheet-1
$worksheet-setInputEncoding('utf-8'); // 鎸囧畾琛岀紪镰
$data = array(
array('濮揿悕', '鑺傜洰娓呭崟', '涓娄紶鏁伴噺'),
array($name, $work, $num),
array($name, $work, $num),
);
for ($row = 0; $row count($data); $row ++) {
for ($col = 0; $col count($data[0]); $col ++) {
$worksheet-writeString($row, $col, $data[$row][$col]); // 鍦 sheet-1 涓鍐椤叆鏁版嵁
}
}
$worksheet = $workbook-addWorksheet('sheet-2'); // 锷犲叆涓涓宸ヤ綔琛 sheet-2
$worksheet-setInputEncoding('utf-8'); // 鎸囧畾琛岀紪镰
$data = array(
array('濮揿悕', '鑺傜洰娓呭崟', '涓娄紶鏁伴噺'),
array($name, $work, $num),
array($name, $work, $num),
);
for ($row = 0; $row count($data); $row ++) {
for ($col = 0; $col count($data[0]); $col ++) {
$worksheet-writeString($row, $col, $data[$row][$col]); // 鍦 sheet-2 涓鍐椤叆鏁版嵁
}
}
$workbook-close(); // 瀹屾垚涓嬭浇
echo $name;
?