PHP如何导出导入CSV文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何导出导入CSV文件?相关的知识,希望对你有一定的参考价值。

我想用php来实现:在页面上点击一个按钮,然后弹出一个保存文件的对话框,选择路径和填写文件名后,我之前从mysql数据库里检索的一张表,被保存成CSV格式的文件。之后我可以在页面上再点击另外一个按钮,然后也弹出来一个文件浏览的对话框,选择好刚才我保存的csv文件,确定后执行我刚才csv文件里的数据覆盖到数据库中的那张表里。希望说的能详细些,我很菜。最好能把代码给出来。
我知道导出CSV文件的时候有一种方法可以用:
header("Content-disposition: filename=text.csv");
header("Content-type: unknown/unknown");
但是弹出来的对话框有个“打开”,“保存”,“取消”按钮,我如何能把“打开”按钮去掉,只让他保存。?或者请给出我别的方法。谢谢
本人比较菜,看不太懂源码,也没找到。
把怎么用那个php的源码给我找找,我找不到。
我只找到两个csv.php文件,里面的代码我也看不懂。。。

参考技术A 你用过phpmyadmin了吗,那上面不是有这个功能吗,你自己去读源代码不就解决了吗

如何使用PHP导出csv和excel文件

(一)phpexcel文件导出:
步骤1,引入文件require APPPATH.'/libraries/PHPExcel.PHP';
步骤2, 实例化PHPEXCEL对象 $objPHPExcel=new PHPExcel();
步骤3, 设置表头 $column = array('A','B','C'); $line = array('词语','频次','词性');
//填充表头信息
for($i = 0;$i < count($tableheader_all);$i++)
$objPHPExcel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
//上一行中"$letter[$i]1"表示第“1”行第“$i”列

步骤4, 填充数据
for ($i = 2;$i <= count($data) + 1;$i++) //因为内容是从第二行开始的,所以i=2表示从第二行开始填充数据
$j = 0;
foreach ($tmp as $key=>$val )
$objPHPExcel->getActiveSheet()->setCellValue("$letter[$j]$i",$data[$i-2][$val]); //数据是从第一条开始但是i的初值是2所以想从第一条开始应该是$data[$i-2]开始
$j++;


步骤5,写进excel中并输出
$write = new PHPExcel_Writer_Excel5($objPHPExcel);
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/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="数据导出_词云图.xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');

(一)CSV文件导出:
csv文件导出最令人头疼的问题就是编码问题,现在分享一下我的经验
首先看服务器是Linux的还是windows的 如果是windows的服务器那么编码问题只能借助于mb_convert_encoding()或者是iconv两个函数相互转换中文编码
如果服务器是linux的 那么很简单 utf-8: setlocale(LC_ALL, ‘en_US.UTF-8′); 简体中文:setlocale(LC_ALL, ‘zh_CN');
下面来说csv导出步骤:

$result = mysql_query("select * from student order by id asc");
$str = "姓名,性别,年龄\n";
$str = iconv('utf-8','gb2312',$str);
while($row=mysql_fetch_array($result))
$name = iconv('utf-8','gb2312',$row['name']); //中文转码
$sex = iconv('utf-8','gb2312',$row['sex']);
$str .= $name.",".$sex.",".$row['age']."\n"; //用引文逗号分开

$filename = date('Ymd').'.csv'; //设置文件名
export_csv($filename,$str); //导出
要将数据导出到本地即下载,需要修改header信息,代码如下:
function export_csv($filename,$data)
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $data;
参考技术A 把Excel文件导入mysql:
打开excel文件,可用phpExcel开源的类
或者:
先把excel文件另存为csv格式,最好是utf8编码。
fgetcsv() — 从文件指针中读入一行并解析 CSV 字段,返回数组本回答被提问者采纳
参考技术B 把Excel文件导入mysql:
打开excel文件,可用phpExcel开源的类
或者:
先把excel文件另存为csv格式,最好是utf8编码。
fgetcsv() — 从文件指针中读入一行并解析 CSV 字段,返回数组

以上是关于PHP如何导出导入CSV文件?的主要内容,如果未能解决你的问题,请参考以下文章

php中如何导入导出CSV格式的文件

如何使用PHP导出csv和excel文件

PHP导入导出csv文件

使用PHP导入和导出CSV文件

用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件

PHP 和 JS 导入导出csv表格(上)