导航:首页 > 编程语言 > php导入excel

php导入excel

发布时间:2022-01-18 02:23:50

❶ 导入excel文件,后端php处理导入的数据并存入数据库,需要前后端结合的demo!

thinkphp3.2和phpexcel导入最基本用法
先整个最基础的代码,理解了这个,后面的就非常简单了

$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn();//取得总列数

$s=$objPHPExcel->getActiveSheet()->getCell("A2")->getValue();

表格内容:

publicfunctionupload(){
$files=$_FILES['exl'];


//exl格式,否则重新上传
if($files['type']!='application/vnd.ms-excel'){
$this->error('不是Excel文件,请重新上传');
}

//上传
$upload=newThinkUpload();//实例化上传类
$upload->maxSize=3145728;//设置附件上传大小
$upload->exts=array('xls');//设置附件上传类型
$upload->rootPath='./Upload/';//设置附件上传根目录
$upload->savePath='excel/';//设置附件上传(子)目录
//$upload->subName=array('date','Ym');
$upload->subName='';
//上传文件
$info=$upload->upload();

$file_name=$upload->rootPath.$info['exl']['savepath'].$info['exl']['savename'];
$exl=$this->import_exl($file_name);

//去掉第exl表格中第一行
unset($exl[0]);

//清理空数组
foreach($exlas$k=>$v){
if(empty($v)){
unset($exl[$k]);
}
};
//重新排序
sort($exl);

$count=count($exl);
//检测表格导入成功后,是否有数据生成
if($count<1){
$this->error('未检测到有效数据');
}

//开始组合数据
foreach($exlas$k=>$v){

$goods[$k]['goods_sn']=$v;

//查询数据库
$where['goods_sn']=array('like','%'.$v.'%');
$res=M('goods')->where($where)->find();

$goods[$k]['goods_name']=$res['goods_name'];
$goods[$k]['goods_thumb']=$res['goods_thumb'];
if($res){
//是否匹配成功
$goods[$k]['is_match']='1';
$f+=1;
}else{
//匹配失败
$goods[$k]['is_match']='0';
$w+=1;
}

}
//实例化数据
$this->assign('goods',$goods);
//print_r($f);

//统计结果
$total['count']=$count;
$total['success']=$f;
$total['error']=$w;
$this->assign('total',$total);

//删除Excel文件
unlink($file_name);
$this->display('info');

}
/*处理上传exl数据
*$file_name文件路径
*/
publicfunctionimport_exl($file_name){
//$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");//这里不能漏掉
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn();//取得总列数

for($i=1;$i<$highestRow+1;$i++){
$data[]=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
}
return$data;
}

有问题一定要及时弄清楚

❷ php如何批量导入excel表格文件

$data=newSpreadsheet_Excel_Reader();//实例化
02$data->setOutputEncoding('utf-8');//设置读取编码
03$data->read($p);//$p就是excel文件路径
04
05for($i=2;$i<=$data->sheets[0]['numRows'];$i++){
06//传如数组,将一行信息写入数据库;
07$arr=$data->sheets[0]['cells'][$i];
08if($arr){
09$r=addUserLine($arr,$posts['bid']);
10if($r){
11echo"楼栋:".$r['bldgname']."房间:".$r['roomname']."学员:".$r['name']."学号:".$r['sid']."导入成功<br/><hr/>";
12}else{
13echo"<br/><hr/>";
14}
15}
16}

❸ php怎么导入大量数据的excel

php导出大量数据的Excel:
PHP从数据库分多次读取100万行记录,和分多次将100万行写入文本文件都没问题
Excel可以支持100万行记录,Excel 2003最大支持65536行,从2007版开始支持104万行了,目前2007的盗版应该比较普及了-_-! 问清楚客户是什么版本。
要导出excel的理由是非常充分和正确的,应该继续坚持。业务人员最熟悉的就是Excel,实在不熟悉现学现用也比别的快。只是要注意,当数据量达到10万行这个级别时,Excel的公式填充将会非常非常慢,如果再有LOOKUP()公式,基本上十分钟内处理CPU满载进程管理器杀不掉的状态,这时候其实xampp + phpmyadmin是一个易用性和性能都最平衡的选择
PHPExcel输出的是Excel XML格式,有个XML头和尾,中间是数据Body,需要将100万行都赋值给一个数组才可以调用PHPExcel->write(),这容易导致PHP执行超时或者内存超限,不妨调整一下php.ini配置,把超时时间和内存限制都改到很大
如果是输出csv格式,那就太简单了,你的问题可能是没给字段内容加引号,加上引号再调用fputcsv试试?其实fputcsv做的事情特别简单,你甚至可以不管它,自己把CSV文件的每一行拼接好了之后用file_put_contents写入

❹ php如何实现上传导入excel数据

难道你导入的时候不是选择的本地 文件吗?input框获取之后 提交过去就可以导入了啊 phpexcel中有例子的啊 可以看看简单的嘛 基本上 按那个例子改点东西就可以用了啊

❺ 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”;

❻ 怎么使用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的数据

参考代码如下:
<?php
// 1.引用ExcelReader类文件
require_once 'Excel/reader.php';
// 2.实例化读取Excel的类
$data = new Spreadsheet_Excel_Reader();
// 3.设置输出编码
$data->setOutputEncoding('utf-8');
// 4.读取指定的excel
$data->read('test.xls');

// 5.循环输出每一行数据,这里读取的是Excel的第一个Sheet表格
// sheets[0]['numRows']代表行数
// sheets[0]['numCols']代表列数
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导入,并添加数据到数据库.

我用的代码是:
<?
//连接数据库文件
$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

第一,在前台html页面进行上传文件:如:
复制代码代码如下:

<form method="post" action="php文件"enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="file_stu" />
<input type="submit" value="导入"/>
</form>

第二,在对应的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 ( $res as $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 ( '导入数据库失败' );
}
}
}
}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的
复制代码代码如下:

class ExcelToArrary extends Service{
public function __construct() {
/*导入phpExcel核心类 注意:你的路径跟我不一样就不能直接复制*/
include_once('./Excel/PHPExcel.php');
}
/**
* 读取excel $filename 路径文件名$encode 返回数据的编码默认为utf8
*以下基本都不要修改
*/
public function read($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表格到数据库,根据表格内的字段修改对应数据,请问大神怎么导入数据库

这种直接使用数据库管理工具导入。

阅读全文

与php导入excel相关的资料

热点内容
华为荣耀系统编译 浏览:730
看板块app哪个好用 浏览:666
java即时编译结果怎么保存 浏览:907
java工程师在深圳 浏览:656
手机sql编译软件 浏览:524
外网服务器地址购买 浏览:994
空调压缩机电容价格 浏览:381
小程序选什么云服务器 浏览:656
如何把java编译回中文 浏览:777
天联软件服务器地址是什么 浏览:964
stc单片机加密 浏览:140
小程序地产广告源码 浏览:542
消费者信息加密私域 浏览:431
程序员开发团队可以怎么创业 浏览:925
设备共享服务器是什么意思 浏览:126
java符号类型 浏览:331
redis客户端java 浏览:214
javatn 浏览:278
应用宝哪里下载王卡免流量app 浏览:235
uv7代喷头加密与不加密 浏览:467