如何用php实现上传excel

我需要先把excel表格弄成html的格式,然后把html的代码上传到数据库的某个表里,然后以字段名content存入,这样我直接echo$row[content];就可... 我需要先把excel表格弄成html的格式,然后把html的代码上传到数据库的某个表里,然后以字段名content存入,这样我直接echo $row[content];就可以出来表格,但是之前这布怎么做,我不能每次都放到dreamweaver里面搞,太麻烦了,我这边还要做一个上传端,传的是excel文件,录入数据库的是html代码,中间的这部转换如何做? 展开
 我来答
暴风锤
推荐于2016-01-03 · 知道合伙人数码行家
暴风锤
知道合伙人数码行家
采纳数:1967 获赞数:9655
从事过多年电力营销及配电运维工作,业务精通。喜欢电子产品有过二年在电脑城兼职的经历,平时也爱编程。

向TA提问 私信TA
展开全部
第一,在前台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 (! copy ( $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;
}
}
悲强
2012-03-26 · TA获得超过1115个赞
知道小有建树答主
回答量:581
采纳率:0%
帮助的人:396万
展开全部
下载一个phpexcel,当前大概是1.7.6版本
例子:
header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL);
set_time_limit(1200); //20分钟
date_default_timezone_set('Europe/London');
require_once '../176/Classes/PHPExcel.php';
require_once '../176/Classes/PHPExcel/IOFactory.php';

$objReader = new PHPExcel_Reader_Excel5();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("../a.xls");
$sheet = $objPHPExcel->getSheet(0); //打开sheet0 序号从0开始
$highestRow = $sheet->getHighestRow(); //得到行数
$highestColumn = $objWorksheet->getHighestColumn(); //
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

//echo '总行数'.$highestRow;

$abiao=array();
for ($row = 1; $row <= $highestRow; ++$row) {
for ($col = 0; $col <= $highestColumnIndex; ++$col) {
$abiao[$row][$col]=$sheet->getCellByColumnAndRow($col, $row)->getValue();
}
}

//以上把表sheet0取到了$abiao这个数组中
//保存
//$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
//$objWriter->save("../aa.xls");
追问
求加qq 69371279
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skcg_yanyu
2012-03-26 · 超过22用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:44万
展开全部
用客户端 读excel文件,然后传数据
vbscript和javascript都可以实现,excel.application
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdwjh007
2012-03-25 · TA获得超过804个赞
知道小有建树答主
回答量:1334
采纳率:92%
帮助的人:309万
展开全部
没有必要这样麻烦的,你用phpexcel实现吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式