本文目录一览:
- php如何实现上传导入excel数据?
- 如何用php实现上传excel
- 怎么写一个php能实现上传excel并导入进mysql呢?还有怎么从mysql导出进一个新的exc
- [php 上传excel 表格 PHPExcel类,出现错](#php 上传excel 表格 PHPExcel类,出现错)
php如何实现上传导入excel数据?
难道你导入的时候不是选择的本地文件吗?input框获取之后提交过去就可以导入了啊。phpexcel中有例子的啊,可以看看简单的嘛。基本上按那个例子改点东西就可以用了啊。
如何用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 (!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;
}
}
怎么写一个php能实现上传excel并导入进mysql呢?还有怎么从mysql导出进一个新的exc
可以使用excel插件,这个相对复杂。 说个非常简单的,一般excel文件可以保存成为csv文件,然后你就可以进行csv的文件处理。 csv的组成一般是:
col1,col2,col3
col12,col22,col33
可见,只要使用explode
两次就可以得到一个二维数组:
array(
array('col1', 'col2', 'col3'),
array('col12', 'col22', 'col33')
)
然后批量导入这个二维数组就很简单了。 导出是一样的,写入一个,想办法把取出的数据构造成:
col1,col2,col3
col12,col22,col33
这样的字符串,然后使用header
函数即可导出csv文件,csv可以使用excel直接打开。
纯手打,望采纳!
php 上传excel 表格 PHPExcel类,出现错
ZipArchive library is not enabled
:出现这个错误说明是程序在调用ZipArchive
这个类的时候没有成功,原因是由于在安装php的时候没有增加php zip的支持(非zlib)。
请在php.ini找到extension=php_zip.dll
并把前面的分号去掉(如果没有,请添加extension=php_zip.dll
此行并确保php_zip.dll
文件存在相应的目录),保存后重启php即可。
在Unix/Linux下的解决办法:
- 在Linux下没有
php_zip.dll
这个文件(有也不会起作用的),所以需要重新编译一下php的zip模块。具体安装方法如下:
cd /usr/src
wget
tar -zxvf zip
cd zip-1.x.x
phpize
./configure
make
sudo make install
其中,在最后使用make install
命令的时候,可能需要用到root的权限,所以建议使用sudo
来运行。安装完之后,屏幕上会提示zip.so
的位置。然后将其记录下来,如:/usr/local/lib/php/extensions/zip.so
。
2. 使用root权限修改php.ini(通常可能会在/usr/local/lib/
文件夹下,不过视当初安装php而定,可以通过phpinfo()
来查看):
增加extension = /usr/local/lib/php/extensions/zip.so
,然后同样在php.ini文件中,将zlib.output_compression = Off
改为zlib.output_compression = On
;
3. 最后别忘了重启一下Apache:
apachectl restart
这个针对php的zip模块就安装完成了,能够在php中使用ZipArchive
类了。