其实最大的一个区别,PHP中有自带的csv函数,可以直接拿来使用,而Excel文件需要重新写入。你这个问题我之前测试过一个大数据,股票数据文件,股票数据文件用csv来保存的,将csv文件的数据直接保存在数据库里很便捷。而excel文件保存的时候,会出现乱码的问题,总之,文本文件和二进制文件保存方式是有区别的。建议在项目用csv文件格式进行导入导出数据。
站在用户的角度思考问题,与客户深入沟通,找到袁州网站设计与袁州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖袁州地区。
虽然有Excel操作类,不建议使用。php操作excel本来就很不地道,表格复杂点就出错,特别是在linux系统上就更麻烦了。
CSV是通用格式,你可以用excel另存为csv格式,再交给php处理。php有专门的fgetcsv()来读取csv中的数据。
php导出csv文件大小无法去除限制,但是可以通过以下方法达到目的,用到的工具:notepad++,步骤如下:
找到php.ini配置文件,需要修改以下三处参数:
post_max_size = 200M //按需调整
upload_max_filesize = 200M //按需调整
max_file_uploads = 200 //按需调整
2.修改完成以后重启php环境(IIS,apache,ngixg),重启后生效,修改完以上三处,导出csv文件大小就不会报错。
注意事项:php.ini里边的大小参数不易太大,20m左右比较合适。
思路:
读取csv文件,每读取一行数据,就插入数据库
示例
文件夹结构
/
file.csv //csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)
index.php //php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
* 读取csv文件,每读取一行数据,就插入数据库
*/
//获取数据库实例
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e-getMessage();
}
//读取file.csv文件
if (($handle = fopen("file.csv", "r")) !== FALSE) {
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
//写入数据库
$sth = $db-prepare('insert into test set name=:name,age=:age');
$sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth-bindParam(':age',$row[1],PDO::PARAM_INT);
$sth-execute();
}
fclose($handle);
}
数据表
CREATE TABLE `test` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT '' COLLATE 'utf8mb4_bin',
`age` INT(10) NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
运行结束后,数据库中会插入csv中的三行数据