欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

thinkph到底怎样输出excel,小弟快急疯了

程序员文章站 2022-04-13 20:17:17
...
thinkph到底怎样输出excel,小弟快急疯了。前台是循环输出表格,name = "list" id = "vo".点击按钮,怎样让它以表格的形式输出到excel,急疯了。大神快来帮忙


回复讨论(解决方案)

thinkphp导出excel,怎样把表格里的数据传递到后台?现在只差这一步了

用第3方的类试试
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0114/309.html

什么叫把表格的数据传递到后台~~~~~

你表格根据什么条件输出的,导出excel根据同样的条件查询数据不就行了?

这是你的第三帖了吧....

我还是这个方法

如果你用不了 有什么问题再进一步探讨 我是可以用的

/**        * 导出数据为excel表格        *@param $data    一个二维数组,结构如同从数据库查出来的数组        *@param $title   excel的第一行标题,一个数组,如果为空则没有标题        *@param $filename 下载的文件名        *@examlpe         $stu = M ('User');        $arr = $stu -> select();        exportexcel($arr,array('id','账户','密码','昵称'),'文件名!');    */     function exportexcel($data=array(),$title=array(),$filename='report'){        header("Content-type:application/octet-stream");        header("Accept-Ranges:bytes");        header("Content-type:application/vnd.ms-excel");          header("Content-Disposition:attachment;filename=".$filename.".xls");        header("Pragma: no-cache");        header("Expires: 0");        //导出xls 开始        if (!empty($title)){            foreach ($title as $k => $v) {                $title[$k]=iconv("UTF-8", "GB2312",$v);            }            $title= implode("\t", $title);            echo "$title\n";        }        if (!empty($data)){            foreach($data as $key=>$val){                foreach ($val as $ck => $cv) {                    $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);                }                $data[$key]=implode("\t", $data[$key]);                             }            echo implode("\n",$data);        }     }

什么叫把表格的数据传递到后台~~~~~

你表格根据什么条件输出的,导出excel根据同样的条件查询数据不就行了?
这种思路我也想了,不过表格里的数据不是一个数组,而且还有序列($key }这个也是后台没有的

这是你的第三帖了吧....

我还是这个方法

如果你用不了 有什么问题再进一步探讨 我是可以用的

/**        * 导出数据为excel表格        *@param $data    一个二维数组,结构如同从数据库查出来的数组        *@param $title   excel的第一行标题,一个数组,如果为空则没有标题        *@param $filename 下载的文件名        *@examlpe         $stu = M ('User');        $arr = $stu -> select();        exportexcel($arr,array('id','账户','密码','昵称'),'文件名!');    */     function exportexcel($data=array(),$title=array(),$filename='report'){        header("Content-type:application/octet-stream");        header("Accept-Ranges:bytes");        header("Content-type:application/vnd.ms-excel");          header("Content-Disposition:attachment;filename=".$filename.".xls");        header("Pragma: no-cache");        header("Expires: 0");        //导出xls 开始        if (!empty($title)){            foreach ($title as $k => $v) {                $title[$k]=iconv("UTF-8", "GB2312",$v);            }            $title= implode("\t", $title);            echo "$title\n";        }        if (!empty($data)){            foreach($data as $key=>$val){                foreach ($val as $ck => $cv) {                    $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);                }                $data[$key]=implode("\t", $data[$key]);                             }            echo implode("\n",$data);        }     }

我就是用的这个方法,$date这个数据就是表格里的数据,怎样把这个数组从前台传递到后台,实在不会

这是你的第三帖了吧....

我还是这个方法

如果你用不了 有什么问题再进一步探讨 我是可以用的

/**        * 导出数据为excel表格        *@param $data    一个二维数组,结构如同从数据库查出来的数组        *@param $title   excel的第一行标题,一个数组,如果为空则没有标题        *@param $filename 下载的文件名        *@examlpe         $stu = M ('User');        $arr = $stu -> select();        exportexcel($arr,array('id','账户','密码','昵称'),'文件名!');    */     function exportexcel($data=array(),$title=array(),$filename='report'){        header("Content-type:application/octet-stream");        header("Accept-Ranges:bytes");        header("Content-type:application/vnd.ms-excel");          header("Content-Disposition:attachment;filename=".$filename.".xls");        header("Pragma: no-cache");        header("Expires: 0");        //导出xls 开始        if (!empty($title)){            foreach ($title as $k => $v) {                $title[$k]=iconv("UTF-8", "GB2312",$v);            }            $title= implode("\t", $title);            echo "$title\n";        }        if (!empty($data)){            foreach($data as $key=>$val){                foreach ($val as $ck => $cv) {                    $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);                }                $data[$key]=implode("\t", $data[$key]);                             }            echo implode("\n",$data);        }     }

这个方法能导出excel,没有问题,问题是我不会把表格里的数据传递到后台$data

上截图吧

"把表格里的数据传递到后台" 大概是个什么意思

u014244418 用户都急死了,答案在眼前,楼主用不来

u014244418 用户都急死了,答案在眼前,楼主用不来
刚才吃饭去了,马上上图


表格里的数据输出到excel,其中exportexcel方法就是四楼的方法。现在要把这个表里的数据传递到这个方法里面,我尝试着把这四个数据传过去,用input的形式只能传第一个值。

上截图吧

"把表格里的数据传递到后台" 大概是个什么意思
我就是用的你贴的代码,title和filename没问题。问题是data,把表格里的数据传递到后台你写的那个方法里,然后再把这些数据写成$data。问题是前台传不过去这些数据

这是你的第三帖了吧....

我还是这个方法

如果你用不了 有什么问题再进一步探讨 我是可以用的

/**        * 导出数据为excel表格        *@param $data    一个二维数组,结构如同从数据库查出来的数组        *@param $title   excel的第一行标题,一个数组,如果为空则没有标题        *@param $filename 下载的文件名        *@examlpe         $stu = M ('User');        $arr = $stu -> select();        exportexcel($arr,array('id','账户','密码','昵称'),'文件名!');    */     function exportexcel($data=array(),$title=array(),$filename='report'){        header("Content-type:application/octet-stream");        header("Accept-Ranges:bytes");        header("Content-type:application/vnd.ms-excel");          header("Content-Disposition:attachment;filename=".$filename.".xls");        header("Pragma: no-cache");        header("Expires: 0");        //导出xls 开始        if (!empty($title)){            foreach ($title as $k => $v) {                $title[$k]=iconv("UTF-8", "GB2312",$v);            }            $title= implode("\t", $title);            echo "$title\n";        }        if (!empty($data)){            foreach($data as $key=>$val){                foreach ($val as $ck => $cv) {                    $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);                }                $data[$key]=implode("\t", $data[$key]);                             }            echo implode("\n",$data);        }     }
收藏,谢谢。

问题解决了,在后台又查询了一遍,真麻烦。但是不知道怎样调节excel的宽度,有的数据太大了

谢谢大家帮忙