① 如何使用PHP导出csv和excel文件
把Excel文件导入mysql:
打开excel文件,可用phpExcel开源的类
或者:
先把excel文件另存为csv格式,最好是utf8编码。
fgetcsv() — 从文件指针中读入一行并解析 CSV 字段,返回数组
② php 生成 csv文件
$filename="export_".date('Ymd').".csv";
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="'.$filename.'"');
header('Cache-Control:max-age=0');
//写入你的查询代码
$fp=fopen('php://output','a');
$print_hea=array("姓名","年龄","性别");
fputcsv($fp,$print_hea);
//下面是你的查询结果代码,把结果循环在数组中后使用
fputcsv($fp,$print_hea_new);
③ php将csv中的数据建立成一个数据表
其实你把$sql打印出来看看也许就知道错在哪儿了。
大概看了一下你的代码,
先将csv中的每一行分割成数组,再连接到sql语句中,但是你貌似忘记加空格了,
例如
nom,VARCHAR,20,TRUE,PRIMARY,TRUE
按照你的代码处理成sql语句就变成了(缺少空格)
nomVARCHAR20TRUEPRIMARYTRUE
正确情况应该是(逗号替换成空格,最后还要加上一个逗号)
nom VARCHAR 20 TRUE,PRIMARY TRUE,
④ php怎么讲字符串变成csv格式
PHPExcel完全可以满足你的要求,给个简单处理例子,具体的你还是看看PHPExcel的文档:
$filename = "myexcel.xlsx";
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filename);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save(str_replace('.xlsx', '.csv',$filename));
⑤ php导出csv,如下代码为什么不弹出提示保存或打开CSV文件
加
header ( "Content-type:application/vnd.ms-excel;charset=utf-8" );
⑥ php 写入数据到csv中,不覆盖原有数据,以新增行插入如何实现
这个跟fputcsv无关,而主要的关键在于你打开文件的模式,你需要使用 a 或是 a+ 模式打开文件。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
$fp = fopen('file.csv', 'a+');
foreach($stu as $data);
{
fputcsv($fp,$data); //每次写入一组数据到csv文件中的一行
}
⑦ PHP生成CSV文件问题 麻烦各位高手帮忙看看
csv很简单
数据以,分开
行用\n
存为.csv就行了
生成xls的话稍微复杂一点儿,下面是一个生成xls的类,你可以按照你的需要修改调用一下。
======================================
用PHP生成xls,csv格式文件的类
2008年09月23日 星期二 上午 09:56
fileOperation.php
****************************************************
class fileOperation {//基类
var $fileName='test';
var $extendName='csv';
var $mPath='./report/';
var $mFp;
function fileOperation() {
}
function openFile($mode='w'){
if(empty($this->fileName)){
$this->setTimeFileName();
}
if (empty($this->extendName)){
$this->setExtendName();
}
$fp=fopen($this->mPath.'/'.$this->fileName.'.'.$this->extendName,$mode);
if($fp){
$this->mFp=$fp;
}else{
return 0;
}
}
function closeFile(){
return fclose($this->mFp);
}
function setTimeFileName($type='Ymd'){
if(!empty($type)){
$this->fileName=$type;
}else{
$this->fileName=time();
}
}
function setExtendName($extend='txt'){
if(!empty($extend)){
$this->extendName=$extend;
}else{
$this->extendName='.csv';
}
}
function setPath($path='./'){
$this->mPath=$path;
}
}
xlsHelper.php
****************************************************
require_once 'fileOperation.php';
class xlsHelper extends fileOperation{//具体实现子类
var $mSpace = '';
var $mHead;
var $mBody='';
function addHeader($head=array()){
$this->mHead='<table width="500" border="1" align="center" cellpadding="5"><tr>';
if (is_array($head)){
foreach($head as $hd){
$this->mHead.='<th bgcolor="#A5A0DE">'.$hd.'</th>';
}
}
$this->mHead.='</tr>';
}
function addBodyData($body=array()){
if(is_array($body)){
for($i=0;$i<count($body);$i++){
$childBody=$body[$i];
$this->mBody.='<tr>';
$this->mSpace = '<td align="center">';
for($j=0;$j<count($childBody);$j++){
$this->mBody.=$this->mSpace.$childBody[$j].'</td>';
}
$this->mBody.="</tr>";
}
}
$this->mBody.='</table>';
}
function _construct(){
}
function writeCSVDate(){
return fwrite($this->mFp,$this->mHead.mb_convert_encoding($this->mBody,'sjis','sjis'));
}
function setSpace($type=','){
$this->mSpace=$type;
}
}
test.php
****************************************************
$xls=new xlsHelper();
$xls->fileName='xxx';//设置生成文件的文件名
$xls->extendName='xls';//文件扩展名
$xls->mPath='./';//文件保存路径
$headerarr=array('姓名','年龄','邮箱');//头部字段名
$xls->addHeader($headerarr);
$datasarr=array(//注意:此处的二维数组一定要是数字索引
array('yht',20,'[email protected]'),
array('ktv009',23,'[email protected]'),
);
$xls->addBodyData($datasarr);
$xls->openFile('w');
if($xls->writeCSVDate()) echo "<script language='javascript'>生成文件成功</script>";
else echo ""<script language='javascript'>无法生成文件</script>";
⑧ 将PHP生成CSV文件2
发给你的程序里,这个已经做好了。
⑨ php 生成csv文件并提示保存
<?php
//文件名
$filename="test.csv";
//数据(具体的根据需要做处理,如果是从数据库查询,原理与此类似,只需设置好写入格式和数据即可。
$data="测试csv";
//设置header
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;
?>
⑩ php 如何从数据里选择所需要信息然后生成csv文件自动保存在指定的路径(不提示保存,自动)
命令行模式下,或者web模式下保存的路径在服务器中,可以达到你的要求(有该路径的权限即可)
如果是在web模式下,不提示直接保存到访客的电脑中的某个位置,是不可以的。
web模式保存到客户端,只能通过下载,由用户指定,或保存到默认的下载目录。
以下是代码示例:
$dsn='mysql:dbname=testdb;host=127.0.0.1';
$user='dbuser';
$password='dbpass';
//连接数据库pdo
try{
$dbh=newPDO($dsn,$user,$password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SETNAMES'UTF8'"));
}catch(PDOException$e){
echo'Connectionfailed:'.$e->getMessage();exit;
}
//读取数据,具体sql你根据情况修改
$stat=$dbh->prepare('SELECT*FROM`table`WHERE`id`>0LIMIT100;');
$stat->execute();
$result=$stat->fetchAll(PDO::FETCH_ASSOC);
//创建csv文件并打开文件指针
$filepath='file.csv';
$fp=fopen($filepath,'w');
//写入数据
foreach($resultas$i=>$row){
//写入标题行
if($i==0){
fputcsv($fp,array_keys($row));
}
fputcsv($fp,$row);
}
//关闭文件指针
fclose($fp);
//把文件输出到下载
$file=fopen($filepath,"r");//打开文件
$size=filesize($filepath);
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".$size);
Header("Content-Disposition:attachment;filename=download.csv");
echofread($file,$size);
fclose($file);
相关知识点:
PHP: fputcsv
PHP:PDO
数据库查询的时候只返回列名,防止列出现重复,csv里会有重复的数据