页面导出csv文件的方法(基于php的)

合集下载

php导出大量数据的方法

php导出大量数据的方法

php导出大量数据的方法在Web开发中,经常会遇到导出大量数据的需求,例如从数据库中导出表格数据、生成Excel报表等。

本文将介绍几种使用PHP导出大量数据的方法,帮助您在实际项目中快速处理这类需求。

一、将数据导出为CSV文件CSV(逗号分隔值)是一种常用的数据交换格式,它的优点是简单、易读,适用于大多数数据导出场景。

以下是使用PHP将数据导出为CSV文件的示例代码:```php<?php// 设置HTTP头,告诉浏览器下载文件header('Content-Type: text/csv');header('Content-Disposition: attachment; filename="data.csv"');// 打开输出流$fp = fopen('php://output', 'w');// 查询数据库获取数据$data = []; // 假设这里是数据库查询的结果// 写入CSV文件头部fputcsv($fp, array_keys($data[0]));// 逐行写入数据foreach ($data as $row) {fputcsv($fp, $row);}// 关闭输出流fclose($fp);>```上述代码首先设置了HTTP头,告诉浏览器将要下载一个CSV文件。

然后,使用`fopen()`打开输出流,指定使用`php://output`作为文件路径,这样就可以直接将数据输出到浏览器。

接着,通过`fputcsv()`函数将表头和数据按CSV格式写入文件。

最后,使用`fclose()`关闭输出流。

二、将数据导出为Excel文件除了导出CSV文件,我们还可以使用PHP将数据导出为Excel文件(xls或xlsx格式)。

这需要借助第三方库,如PHPExcel或PhpSpreadsheet。

php导出csv格式数据,以及将数字转换成文本解决办法

php导出csv格式数据,以及将数字转换成文本解决办法

php导出csv格式数据,以及将数字转换成⽂本解决办法php导出csv格式数据实现:先定义⼀个字符串存储内容,例如$exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."\n";然后对需要保存csv的数组进⾏foreach循环,例如if (!empty($lists)){foreach($lists as $key => $value){$time = date("Y-m-d_H:i:s", $value['add_time']);$exportdata .= "\"\t".$value['Rule_id']."\",\"\t".$value['Rule_name']."\",\"\t".$value['Matching_level']."\",\"\t"."{$value['Rule_action']}"."\",\"\t".$value['Service_type']."\",\"\t".$value['Keyword1']."\",\"\t".$value['Keyword2']."\",\"\t".$value['Keyword3']."\",\"\t".$value['Matching_word']."\",\"\t".$value['Set_time']."\",\"\t".$valu }}csv格式的内容⽤','隔开,在现实的时候就能分格了。

基于php导出到Excel或CSV的详解(附utf8、gbk编码转换)

基于php导出到Excel或CSV的详解(附utf8、gbk编码转换)

基于php导出到Excel或CSV的详解(附utf8、gbk编码转换)php导⼊到excel乱码是因为utf8编码在xp系统不⽀持所有utf8编码转码⼀下就完美解决了Php代码复制代码代码如下:<?phpheader("Content-Type: application/vnd.ms-excel; charset=UTF-8");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/octet-stream");header("Content-Type: application/download");header("Content-Disposition: attachment;filename=11.xls ");header("Content-Transfer-Encoding: binary ");>Php代码复制代码代码如下:<?$filename="php导⼊到excel-utf-8编码";$filename=iconv("utf-8", "gb2312", $filename);echo $filename;>Php代码复制代码代码如下:<?phpheader("Content-Type: application/vnd.ms-excel; charset=UTF-8");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/octet-stream");header("Content-Type: application/download");header("Content-Disposition: attachment;filename=11.xls ");header("Content-Transfer-Encoding: binary ");>Php代码复制代码代码如下:0.<?0.$filename="php导⼊到excel-utf-8编码";0.echo $filename;0.?>访问⽹站的时候就下载到excel⾥⾯要弄单元格区别的话⽤table表格做⽹页的就可以了====================== 其他⽅法 =============================复制代码代码如下:0.<?php0.header("Content-type:application/vnd.ms-excel");0.header("Content-Disposition:filename=php2excel.xls");0.echo "A1/t B1/t C1/n";0.echo "A2/t B2/t C2/n";0.echo "A3/t B3/t C3/n";0.echo "A4/t B4/t C4/n";0.?>复制代码代码如下:<?php$action =$_GET['action'];if ($action=='make'){$fp = fopen("demo_csv.csv","a"); //打开csv⽂件,如果不存在则创建$title = array("First_Name","Last_Name","Contact_Email","Telephone"); //第⼀⾏数据$data_1 = array("42343","423432","4234","4234");$data_2 = array("4234","Last_Name","Contact_Email","Telephone");$title = implode(",",$title); //⽤ ' 分割成字符串$data_1 = implode(",",$data_1); // ⽤ ' 分割成字符串$data_2 = implode(",",$data_2); // ⽤ ' 分割成字符串$data_str =$title."/r/n".$data_1."/r/n".$data_2."/r/n"; //加⼊换⾏符fwrite($fp,$data_str); // 写⼊数据fclose($fp); //关闭⽂件句柄echo "⽣成成功";}echo "<br>";echo "<a href='?action=make'>⽣成csv⽂件</a>";>也可以做⼀个封闭函数:复制代码代码如下:function exportToCsv($csv_data, $filename = 'export.csv') {$csv_terminated = "/n";$csv_separator = ",";$csv_enclosed = '"';$csv_escaped = "//";// Gets the data from the database$schema_insert = '';$out = '';// Format the dataforeach ($csv_data as $row){$schema_insert = '';$fields_cnt = count($row);//printr($row);$tmp_str = '';foreach($row as $v){$tmp_str .= $csv_enclosed.str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $v).$csv_enclosed.$csv_separator;} // end for$tmp_str = substr($tmp_str, 0, -1);$schema_insert .= $tmp_str;$out .= $schema_insert;$out .= $csv_terminated;} // end whileheader("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Length: " . strlen($out));header("Content-type: text/x-csv");header("Content-Disposition:filename=$filename");echo $out;/*$csv_data = array(array('Name', 'Address'));array_push($csv_data, array($row['name'],$row['address']));...exportToCsv($csv_data,'new_file.csv');*/复制代码代码如下:<?/*** Simple class to properly output CSV data to clients. PHP 5 has a built* in method to do the same for writing to files (fputcsv()), but many times* going right to the client is beneficial.** @author Jon Gales*/class CSV_Writer {public $data = array();public $deliminator;/*** Loads data and optionally a deliminator. Data is assumed to be an array* of associative arrays.** @param array $data* @param string $deliminator*/function __construct($data, $deliminator = ","){if (!is_array($data)){throw new Exception('CSV_Writer only accepts data as arrays');}$this->data = $data;$this->deliminator = $deliminator;}private function wrap_with_quotes($data){$data = preg_replace('/"(.+)"/', '""$1""', $data);return sprintf('"%s"', $data);}/*** Echos the escaped CSV file with chosen delimeter** @return void*/public function output(){foreach ($this->data as $row){$quoted_data = array_map(array('CSV_Writer', 'wrap_with_quotes'), $row); echo sprintf("%s/n", implode($this->deliminator, $quoted_data));}}/*** Sets proper Content-Type header and attachment for the CSV outpu** @param string $name* @return void*/public function headers($name)header('Content-Type: application/csv');header("Content-disposition: attachment; filename={$name}.csv");}}/*//$data = array(array("one","two","three"), array(4,5,6));$data[] = array("one","two","three");$data[] = array(4,5,6);$csv = new CSV_Writer($data);$csv->headers('test');$csv->output();*/复制代码代码如下:<?phprequire_once 'Spreadsheet/Writer.php';$workbook = new Spreadsheet_Excel_Writer();/* ⽣成 CSV$filename = date('YmdHis').'.csv';$workbook->send($filename); // 发送 Excel ⽂件名供下载*/// ⽣成 Excel$filename = date('YmdHis').'.xls';$workbook->send($filename); // 发送 Excel ⽂件名供下载$workbook->setVersion(8);$workbook->setBIFF8InputEncoding('UTF-8');$worksheet =& $workbook->addWorksheet("Sheet-1");$data[]= array('id','username','company','email','mob','daytime','intent');$data[] = array(1,'⽼梁','**⼯作室','','1363137966*',time(),'y');$total_row = count($data);$total_col = count($data[0]);for ($row = 0; $row < $total_row; $row ++) {for ($col = 0; $col < $total_col; $col ++) {$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-1 中写⼊数据 }}/*$worksheet =& $workbook->addWorksheet("Sheet-2");$data[]= array('id','username','company','email','mob','daytime','intent');$data[] = array(1,'⽼梁','**⼯作室','','1363137966*',time(),'y');$total_row = count($data);$total_col = count($data[0]);for ($row = 0; $row < $total_row; $row ++) {for ($col = 0; $col < $total_col; $col ++) {$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-2 中写⼊数据 }}*/$workbook->close(); // 完成下载>读取Excel⽂件function Read_Excel_File($ExcelFile,$Result)$ExcelFile Excel⽂件名$Result 返回的结果函数返回值正常返回0,否则返回错误信息返回的值数组$result[sheet名][⾏][列] 的值为相应Excel Cell的值function Create_Excel_File($ExcelFile,$Data) $ExcelFile Excel⽂件名$Data Excel表格数据请把函数写在PHP脚本的开头例1:复制代码代码如下:<?require "excel_class.php";Read_Excel_File("Book1.xls",$return);for ($i=0;$i<count($return[Sheet1]);$i++){for ($j=0;$j<count($return[Sheet1][$i]);$j++) {echo $return[Sheet1][$i][$j]."|";}echo "<br>";}>例2:复制代码代码如下:<?require "excel_class.php";Read_Excel_File("Book1.xls",$return); Create_Excel_File("ddd.xls",$return[Sheet1]); >。

导出csv文件(php实现)

导出csv文件(php实现)
implode(',', $xlsTitle) . "\n";
// 内容 foreach ($xlsList as $key => $value) {
$exportData = []; foreach ($arrayKeys as $k) {
$value = array_values($value); $exportData[$k] = addslashes(iconv('utf-8', 'GBK//IGNORE', str_replace(',', ', ', $value[$k]))); } $string .= implode(',', $exportData) . "\n"; } $filename = $xlsName . date('Y-m-d H:i:s') . '.csv'; header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=" . $filename); header("Cache-Controller:must-revalidate,post-check=0,pre-check=0"); header('Expires:0'); echo $string; }
* ];
*
* $data['xlsTitle'] : 表头
* $data['xlsName'] : 文件名称
* $data['xlsList'] : 表数据

php使用fputcsv实现大数据的导出操作详解

php使用fputcsv实现大数据的导出操作详解

php使⽤fputcsv实现⼤数据的导出操作详解本⽂实例讲述了php使⽤fputcsv实现⼤数据的导出操作。

分享给⼤家供⼤家参考,具体如下:为了实验⼤数据的导出,我们这⾥先⾃已创建⼀张⼤表,表结构如下:CREATE TABLE `tb_users` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '⽤户ID',`name` varchar(32) DEFAULT '' COMMENT '⽤户名',`age` tinyint(3) DEFAULT '0' COMMENT '⽤户年龄',`desc` varchar(255) DEFAULT '' COMMENT '⽤户描述',`phone` varchar(11) DEFAULT '' COMMENT '⽤户⼿机',`qq` varchar(16) DEFAULT '' COMMENT '⽤户QQ',`email` varchar(64) DEFAULT '' COMMENT '⽤户邮箱',`addr` varchar(255) DEFAULT '' COMMENT '⽤户地址',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;然后写个php脚本往这个表插⼊数据,代码如下:<?phpset_time_limit(0);ini_set('memory_limit', '128M');//使⽤TP3.2的String类,php7下会报错,注意把类名换⼀下require './String.class.php';use Org\Util\NewString;$begin = microtime(true);$db = new mysqli('127.0.0.1', 'root', '', 'test');if($db->connect_error) {die('connect error');}//数据插⼊语句$insSql = '';//⼀百万数据,分200步,每步插⼊5000条$step = 200;$nums = 5000;for($s = 0; $s < $step; ++$s) {$insSql = 'INSERT INTO tb_users VALUES';for($n = 0; $n < $nums; ++$n) {$name = NewString::randString(3, 4);$age = mt_rand(1, 120);$desc = NewString::randString(64, 4);$phone = NewString::randString(11, 1);$qq = NewString::randString(13, 1);$email = $qq . '@';$addr = NewString::randString(128, 4);$insSql .= "(NULL, '{$name}', $age, '{$desc}', '{$phone}', '{$qq}', '{$email}', '{$addr}'),";}$insSql = rtrim($insSql, ',');$db->query($insSql);}$end = microtime(true);echo '⽤时:', $end - $begin;$db->close();⾥⾯⽤到的TP3.2的String类⼤家⾃⾏上TP官⽹下载。

php中 fputcsv的使用方法

php中 fputcsv的使用方法

php中 fputcsv的使用方法【实用版3篇】目录(篇1)1.PHP中fputcsv的使用方法2.使用fputcsv函数将数据写入CSV文件3.详细介绍fputcsv函数的语法和参数4.使用示例及其输出结果5.fputcsv函数的使用限制和注意事项正文(篇1)PHP中fputcsv的使用方法PHP的fputcsv函数用于将数据写入CSV文件。

使用fputcsv函数可以将任何可读的数据(如数组或关联数组)转换为CSV格式,并将其写入文件中。

目录(篇2)1.PHP中fputcsv的使用方法介绍2.fputcsv函数的基本语法和参数说明3.fputcsv函数的使用示例及其输出结果4.fputcsv函数的优点和注意事项正文(篇2)一、PHP中fputcsv的使用方法介绍fputcsv() 函数用于将数组中的数据以 CSV 格式写入到指定的文件中。

该函数接受三个必需参数:文件指针、要写入的数据数组以及可选的格式化选项。

使用 fputcsv() 函数可以方便地将不同类型的数据以 CSV格式进行存储和传输。

二、fputcsv函数的基本语法和参数说明语法:fputcsv($file, $array, $delimiter, $enclosure)参数说明:1.$file:文件指针,指定要写入的文件。

2.$array:要写入的数据数组,每个元素表示一行数据。

3.$delimiter:可选参数,指定分隔符,默认为逗号(,)。

4.$enclosure:可选参数,指定引号包围的值,默认为双引号(")。

目录(篇3)1.PHP中fputcsv的使用方法介绍2.fputcsv函数的基本语法和参数说明3.fputcsv函数的使用示例及其输出结果4.fputcsv函数的注意事项和使用场景正文(篇3)PHP中fputcsv的使用方法介绍-----------在PHP中,我们可以使用fputcsv函数将数据以CSV格式写入文件或输出流中。

php导入、导出CSV文件

php导入、导出CSV文件
需要提醒的是在导入导出数据过程注意中文乱码问题这主要是数据编码格式问题使用过程根据实际情况对数据进行转码
php导入、导出CSV文件
class csv
{
private $resource;
/**
* @param string $fileName 文件路径
* @param string $mode 文件访问类型:w:写入、r:只读
* @param array $data
* @return int
*/
public function export($data)
{
fputcsv($this->resource, $data);
}
/**
* 导出CSV
* @return array
*/
public function import()
{
$tmp = array();
while($data = fgetcsv($this->resource))
{
$tmp[] = $data;
}
return $tmp;
}
}
这里我们主要用到ቤተ መጻሕፍቲ ባይዱphp fgetcsv函数、fputcsv函数。
需要提醒的是在导入、导出数据过程注意中文乱码问题,这主要是数据编码格式问题,使用过程根据实际情况对数据进行转码。
*/
public function __construct($fileName, $mode)
{
$this->resource = fopen($fileName, $mode);
}
public function __destruct()
{
fclose($this->resource);

PHP如何导入和导出CSV文件

PHP如何导入和导出CSV文件

PHP如何导入和导出CSV文件PHP如何导入和导出CSV文件项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?下面是店铺为大家带来的关于PHP如何导入和导出CSV文件的知识,欢迎阅读。

PHP如何导入和导出CSV文件我们先准备mysql数据表,假设项目中有一张记录学生信息的`表student,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。

CREATE TABLE `student` (`id` int(11) NOT NULL auto_increment,`name` var50) NOT NULL,`sex` var10) NOT NULL,`age` smallint(3) NOT NULL default '0',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;我们还需要一个html交互页面,放置导入表单和导出按钮。

请选择要导入的CSV文件:<input type="submit"class="btn" value="导入CSV">选择好本地csv文件后,点击导入,提交到do.php?action=import处理,而点击导出按钮则请求地址do.php?action=export进行数据导出处理。

1导入CSVdo.php需要根据get过来的参数,分别处理导入和导出过程,php结构如下:include_once ("connect.php"); //连接数据库$action = $_GET['action'];if ($action == 'import') { //导入CSV//导入处理} elseif ($action=='export') { //导出CSV//导出处理}导入CSV处理流程:校验csv文件合法性(本文忽略)->打开读入并解析csv文件中的字段->循环获取各字段值->批量添加到数据表中->完成。

一个简单的导出CSV文件的方法

一个简单的导出CSV文件的方法

⼀个简单的导出CSV⽂件的⽅法分3步:1,查找对象列表2,组织字符串3,输出⽂件代码⽚段://1,查找对象列表List callLogList = reportCallService.getCallLogList(fromDate, endDate);//组织字符串,注意添加换⾏符StringBuffer bf = new StringBuffer();LocalCallLog cl = new LocalCallLog();bf.append("Calllog ID").append(",").append("Src No").append(",").append("Dest No").append("\n");for (Iterator it = callLogList.iterator(); it.hasNext();) {cl = (LocalCallLog) it.next();bf.append(cl.getCallLogId()).append(",").append(cl.getSrcNum()).append(",").append(cl.getDestNum()).append("\n");}//输出⽂件response.setContentType("application/x-download");// String now = new SimpleDateFormat("h:mm a").format(new Date());// now.replace(" ", "");// String filenamedisplay = URLEncoder.encode("CallReport"+now// +".csv","UTF-8");String filenamedisplay = URLEncoder.encode("CallReport.csv", "UTF-8");response.addHeader("Content-Disposition", "attachment;filename="+ filenamedisplay);PrintWriter pw = response.getWriter();pw.write(bf.toString());return null;}。

Django实现web页面数据导出为CSV文件

Django实现web页面数据导出为CSV文件

Django实现web页⾯数据导出为CSV⽂件⽬录⼀. 需求说明在实际项⽬中,有⼀种需求是这样的:对于web页⾯显⽰的数据,业务⼈员需要将其下载到本地使⽤。

针对这⼀需求,这⾥结合Django进⾏实现。

⼆. 后台实现的主要代码# python3.6+Django1.6import csvimport timefrom django.http import HttpResponsedef students(request):# 根据条件查询相关数据stu_lis = models.Student.objects.all()# stus_lis = models.Student.objects.all().value_list('name', 'age', 'addr')response = HttpResponse(content_type='text/csv', charset='GBK')# ⾃定义⽂件名time_now = time.strftime('%Y%m%d')filename = 'students_' + time_now# 添加header,attachment表⽰以附件⽅式下载response['Content-Disposition'] = f'attachment; filename="{filename}.csv"'# ⽣成⼀个对象writer = csv.writer(response)# 定义表头writer.writerow(['姓名', '年龄', '地址'])# 添加数据# writer.writerows(stus_lis)for stu in stu_lis:writer.writerow([, stu.age, stu.addr])return response上述代码中,数据查询和数据添加时,分别使⽤了两种⽅法(注释掉了⼀种),两者的区别主要是添加数据时,是⼀条⼀条添加还是⼀次全部添加,使⽤writer.writerow()⽅法,每次添加⼀条数据,writer.writerows()可⼀次添加多条数据,但是若数据量过⼤,可能会导致内存溢出。

python导出方法

python导出方法

python导出方法在 Python 中,数据导出方法通常依赖于你要使用的库或框架。

以下是两种常见的数据导出方法:1. 使用`pandas`库导出.xlsx 文件和.csv 文件:```pythonimport pandas as pd# 导出.xlsx 文件data1 = {'姓名': ('Brcue', 'Ada', 'Lucy', 'Kobe'), '数学': (110, 122, 135, 130), '语文': (99, 105, 89, 120), '英语': (113, 124, 135, 99), '物理': (92, 98, 100, 88)} data2 = {'姓名': ('Brcue', 'Ada', 'Lucy', 'Kobe'), '体育': (110, 122, 135, 130), '化学': (99, 105, 89, 120), '地理': (113, 124, 135, 99), '政治': (92, 98, 100, 88)} df1 = pd.DataFrame(data1)df2 = pd.DataFrame(data2)de_merge = pd.merge(df1, df2, on='姓名')de_merge.to_excel("d:\pandas_data\score_12_20.xlsx")# 导出.csv 文件data1 = {'姓名': ('Brcue', 'Ada', 'Lucy', 'Kobe'), '数学': (110, 122, 135, 130), '语文': (99, 105, 89, 120), '英语': (113, 124, 135, 99), '物理': (92, 98, 100, 88)} data2 = {'姓名': ('Brcue', 'Ada', 'Lucy', 'Kobe'), '体育': (110, 122, 135, 130), '化学': (99, 105, 89, 120), '地理': (113, 124, 135, 99), '政治': (92, 98, 100, 88)} df1 = pd.DataFrame(data1)df2 = pd.DataFrame(data2)de_merge = pd.merge(df1, df2, on='姓名')de_merge.to_csv("d:\pandas_data\score_12_20.csv")```2. 使用`openpyxl`库将数据导出到 Excel 文件:```pythonfrom openpyxl import Workbook# 创建一个新的 Excel 文件wb = Workbook()# 添加工作表sheet = wb.create_sheet('Sheet1')# 写入数据sheet('A1') = 'Hello, World!'data = ('Python', '输出', '到', 'Excel')for row in data:sheet.append(row)# 保存文件wb.save('output.xlsx')```以上是在 Python 中常见的数据导出方法,你可以根据自己的需求选择适合的方法。

php csv导出数字变科学技术法

php csv导出数字变科学技术法

php csv导出数字变科学技术法在进行数据导出时,我们经常会遇到数字过大导致显示不全或者不准确的问题。

为了解决这一问题,我们可以使用科学技术法来导出大数字,以确保数据的准确性和完整性。

本文将介绍如何使用PHP将数字转换为科学技术法并进行导出。

首先,我们需要明确什么是科学技术法。

科学技术法是一种表示大数字和小数字的方法,它以指数形式展示,并且具有较高的精度和可读性。

例如,1亿可以表示为1e8,1千可以表示为1e3。

科学技术法在表示大数字时能够更为简洁和方便,能够准确地表达数字的大小。

接下来,我们需要引入PHP的数值转换函数来实现将数字转换为科学技术法的功能。

PHP提供了number_format()函数,可以将一个数值格式化为指定的小数位数和千位分隔符。

我们可以利用该函数将大数字转换为科学技术法表示。

下面是一个示例代码,展示了如何使用PHP将数字转换为科学技术法并进行导出:```phpfunction exportCSV($data){//创建CSV文件并打开$fp=fopen('result.csv','w');//写入标题行$title=array('数字','科学技术法');fputcsv($fp,$title);//遍历数据并写入CSV文件foreach($data as$row){$number=$row['number'];$scientificNotation=number_format($number,0, '.','');$row=array($number,$scientificNotation);fputcsv($fp,$row);//关闭CSV文件fclose($fp);//测试数据$data=array(array('number'=>100000000,'name'=>'数值1'),array('number'=>1000,'name'=>'数值2'),array('number'=>100,'name'=>'数值3')//调用函数进行导出exportCSV($data);以上代码首先定义了一个`exportCSV()`函数,该函数接受一个包含数字和其他相关信息的数组。

运用php实现对csv格式文件数据导入导出的功能

运用php实现对csv格式文件数据导入导出的功能
第 42 卷第 1 期 2020TALLURGY
Vol.42 No.1 Feb.ꎬ2020
文章编号:1672 ̄4461( 2020) 01 ̄0106 ̄04
运用 PHP 实现对 csv 格式文件数据导入导出的功能
万建新ꎬ马 丁ꎬ王惠军
( 西北矿冶研究院ꎬ甘肃 白银 730900)
优点:跨平台ꎬ效率比较高ꎬ可以读写ꎮ 缺点:只能直接使用 csv 的文件ꎬ如果经常接受 Excle 二进制文件的话需要手工转换ꎬ不能自动化ꎮ 3.1 相关函数介绍 ⑴fgetcsv ( fileꎬ lengthꎬ separatorꎬ enclosure ) ( 表 1) 的参数介绍ꎮ fgetcsv( ) 函数从文件指针中读入一行并解析 csv 字段ꎮ 与 fgets( ) 类似ꎬ不同的是 fgetcsv( ) 解 析读入的行并找出 csv 格式的字段ꎬ然后返回一个 包含这些字段的数组ꎮ fgetcsv( ) 出错时返回 FALSEꎬ包括碰到文件结 束时ꎮ 注释:从 PHP 4.3.5 起ꎬfgetcsv( ) 的操作是二进 制安全的ꎮ
107
2.2 使用 csv 文件格式的优点 ⑴按一定的格式去生成 csv 文件ꎬ在 Excel 中打
开的时候就是完整的行和列格式ꎬ且 csv 文件可以 直接用 Excel 工具打开ꎻ 同样的数据内 容ꎬ 生 成 的 csv 文件的大小远远小于生成的 Excel 文件ꎮ
⑵计算机写 csv 文件的效率和写 txt 文件的效 率一样高ꎬ对系统资源的消耗低于 Excel 文件ꎮ Ex ̄ cel 文件不能流式处理ꎬ占用比较大的内存ꎬ很容易 导致内存溢出ꎻ 并且 Excel 的数据量是 有 限 制 的ꎬ 2007 以上版本 Excel 的最大行数不能超过1 048 576 行ꎬ16 384 列ꎮ 一旦超过ꎬ将无法生成 Excel 文件ꎮ 导出 csv 文件ꎬ则可以像导出 txt 一样ꎬ以文本流的方 式进行流式处理ꎬ不但能导出海量信息ꎬ而且流式处 理占用内存极低ꎬ服务器对浏览器的响应也是非常迅 速的ꎬ轻松导出几百万行数据ꎬ理论上是不限量的ꎮ

php导出csv数据在浏览器中输出提供下载或保存到文件的示例

php导出csv数据在浏览器中输出提供下载或保存到文件的示例

php导出csv数据在浏览器中输出提供下载或保存到⽂件的⽰例复制代码代码如下:/*** 导出数据到CSV⽂件* @param array $data 数据* @param array $title_arr 标题* @param string $file_name CSV⽂件名*/function export_csv(&$data, $title_arr, $file_name = '') {ini_set("max_execution_time", "3600");$csv_data = '';/** 标题 */$nums = count($title_arr);for ($i = 0; $i < $nums - 1; ++$i) {$csv_data .= '"' . $title_arr[$i] . '",';}if ($nums > 0) {$csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n";}foreach ($data as $k => $row) {for ($i = 0; $i < $nums - 1; ++$i) {$row[$i] = str_replace("\"", "\"\"", $row[$i]);$csv_data .= '"' . $row[$i] . '",';}$csv_data .= '"' . $row[$nums - 1] . "\"\r\n";unset($data[$k]);}$csv_data = mb_convert_encoding($csv_data, "cp936", "UTF-8");$file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中⽂名乱码的bug$file_name = urlencode($file_name);$file_name = str_replace('+', '%20', $file_name);}$file_name = $file_name . '.csv';header("Content-type:text/csv;");header("Content-Disposition:attachment;filename=" . $file_name);header('Cache-Control:must-revalidate,post-check=0,pre-check=0');header('Expires:0');header('Pragma:public');echo $csv_data;}复制代码代码如下:function export_csv($data, $title_arr, $file_name = '') {$csv_data = '';/** 标题 */$nums = count($title_arr);for ($i = 0; $i < $nums - 1; ++$i) {$csv_data .= '"' . $title_arr[$i] . '",';}if ($nums > 0) {$csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n";}foreach ($data as $k => $row) {for ($i = 0; $i < $nums - 1; ++$i) {$row[$i] = str_replace("\"", "\"\"", $row[$i]);$csv_data .= '"' . $row[$i] . '",';}$csv_data .= '"' . $row[$nums - 1] . "\"\r\n";unset($data[$k]);}$file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name; file_put_contents($file_name, $csv_data) ;}(保存到⽂件):复制代码代码如下:$file_name="/var/www/tmp/test.csv" ;$header = array('0' => '参数ID','1' => '参数名称','2' => '统计次数','3' => '统计次数百分⽐','4' => '唯⼀⽤户数','5' => '唯⼀⽤户数百分⽐','6' => '⼈均次数');$csvList = array(array("111", "title", "12", "100%", "23", "50%", "4")) ; export_csv($csvList, $header, $file_name) ;。

PHPExcel导出数据(xls或xlsx或csv)-助手类(函数)

PHPExcel导出数据(xls或xlsx或csv)-助手类(函数)

PHPExcel导出数据(xls或xlsx或csv)-助⼿类(函数)本⽂链接:说明:简单好⽤的导出助⼿,轻松导出数据到 excel !!使⽤⽰例1:使⽤⽰例2:⽀持数字格式请看:phpoffice\phpexcel\Classes\PHPExcel\Style\NumberFormat.php 使⽤⽰例3:源码:<?phpnamespace common\helpers;use yii\helpers\ArrayHelper;/*** Excel 助⼿*/class ExcelHelper{public static$styleFormat = [];/*** @see \PHPExcel_Style_NumberFormat*/public static function setStyleFormat($format){self::$styleFormat = $format;}/*** 导出* @see https:///tujia/p/11358096.html* @param array $titles 标题,⼀维数组,可传map或单纯标题* @param array $dataArray 数据,⼆维数组,可传map或单纯数据* @param string $filename ⽂件名,要带后缀* @param string $bigTitle 居中加粗的⼤标题,默认为空* @param array $extra 扩展数据* @return file*/public static function export(array$titles, $dataArray, $filename, $bigTitle='', $extra=[]) {set_time_limit(0);ini_set('memory_limit', '512M');// 后缀$suffix = substr($filename, strrpos($filename, '.'));empty($titles) && die('标题数组不能为空!');empty($dataArray) && die('数据数组不能为空!');!in_array($suffix, ['.xls', '.xlsx']) && die('⽂件名格式错误!');$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;$cacheSettings = array('memoryCacheSize ' => '512MB');\PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);$oExcel = new \PHPExcel();$oExcel->setActiveSheetIndex(0);$sheet = $oExcel->getActiveSheet();// 设置列数据格式if (!empty(self::$styleFormat)) {$fields = array_keys($titles);foreach (self::$styleFormat as$field => $formatCode) {$offset = array_search($field, $fields);$col = chr(65+$offset);$sheet->getStyle($col)->getNumberFormat()->setFormatCode($formatCode);}}// ⾏索引$rowIndex = $bigTitle!=''? 2:1;$chr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'];// 设置⼤标题if ($bigTitle != '') {$sheet->mergeCells('A1:'. $chr[count($titles)-1] .'1');$sheet->getStyle('A1')->applyFromArray(['font' => ['bold'=>true],'alignment' => ['horizontal'=>\PHPExcel_Style_Alignment::HORIZONTAL_CENTER]]);$sheet->setCellValue('A1', $bigTitle);}// 设置标题 A1 B1 C1 ....$colIndex = 0;$fieldsMap = [];foreach ($titles as$key => $title) {$fieldsMap[] = $key;$sheet->setCellValue($chr[$colIndex] . $rowIndex, $title);$colIndex++;}// 设置内容 A1 B1 C1 .... A2 B2 C2 ....$rowIndex++;foreach ($dataArray as$key => $value){foreach ($fieldsMap as$colIndex => $field) {if (strrpos($field, '|') !== false) {$temp1 = explode('|', $field);$pos = strrpos($temp1[1], '.');$pos === false && $pos = strlen($temp1[1]);$temp2 = [];$temp2[0] = substr($temp1[1], 0, $pos);$temp2[1] = substr($temp1[1], $pos+1);$val = $value[$temp1[0]];//$val = self::$temp2[0]($extra, $temp2[1], $val);$val = call_user_func_array(array('\common\helpers\ExcelHelper',$temp2[0]),array($extra, $temp2[1], $val, $value)); } else {$val = $field? $value[$field] : $value;}$sheet->setCellValue($chr[$colIndex].$rowIndex, $val);}$rowIndex++;}header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");if ($suffix == '.xlsx') {header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');} else {header('Content-Type: application/vnd.ms-excel');}header('Content-Disposition: attachment;filename="'. $filename .'"');header("Content-Transfer-Encoding: binary");header("Pragma: no-cache");$oWriter = \PHPExcel_IOFactory::createWriter($oExcel, 'Excel2007');$oWriter->save('php://output');$oExcel->disconnectWorksheets();exit;}/*** 导出* @see https:///tujia/p/5999806.html* @param array $titles 标题,⼀维数组,可传map或单纯标题* @param array $dataArray 数据,⼆维数组,可传map或单纯数据* @param string $filename ⽂件名,要带后缀* @param array $extra 扩展数据* @return file*/public static function exportSimple(array$titles, $dataArray, $filename, $extra=[]){// 后缀$suffix = substr($filename, strrpos($filename, '.'));empty($titles) && die('标题数组不能为空!');empty($dataArray) && die('数据数组不能为空!');!in_array($suffix, ['.xls', '.xlsx', '.csv']) && die('⽂件名格式错误!');// 导出准备set_time_limit(0);ini_set('memory_limit', '512M');header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition: attachment; filename='.$filename);if ($suffix == '.xlsx') {header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');} elseif ($suffix == '.xls') {header('Content-Type: application/vnd.ms-excel');} elseif ($suffix == '.csv') {header('Content-Type: application/vnd.ms-excel; charset=gb18030');}header("Content-Transfer-Encoding: binary");header("Pragma: no-cache");$isCsv = ($suffix == '.csv');$fieldsCount = count($titles);if ($isCsv) {echo mb_convert_encoding(implode(',', array_values($titles)), 'gb18030') . "\n";} else {echo '<table>';echo '<tr>';foreach ($titles as$key => $value) {echo sprintf('<td>%s</td>', $value);}echo '</tr>';}foreach ($dataArray as$key => $value) {$i = 0;$isCsv==false && print('<tr>');foreach ($titles as$field => $title) {if (strrpos($field, '|') !== false) {$temp1 = explode('|', $field);$pos = strrpos($temp1[1], '.');$pos === false && $pos = strlen($temp1[1]);$temp2 = [];$temp2[0] = substr($temp1[1], 0, $pos);$temp2[1] = substr($temp1[1], $pos+1);$val = $value[$temp1[0]];//$val = self::$temp2[0]($extra, $temp2[1], $val);$val = call_user_func_array(array('\common\helpers\ExcelHelper',$temp2[0]),array($extra, $temp2[1], $val, $value)); } else {$val = $field? $value[$field] : $value;}if ($isCsv) {echo mb_convert_encoding($val . ($i == $fieldsCount-1? "\n":','), 'gb18030');} else {if (isset(self::$styleFormat[$field])) {echo sprintf("<td style='mso-number-format:\"%s\";'>%s</td>", self::$styleFormat[$field], $val);} else {echo sprintf('<td>%s</td>', $val);}}$i++;}$isCsv==false && print('</tr>');}$isCsv==false && print('</table>');exit;}public static function extra($extra, $extra_key, $val, $row){$arr = ArrayHelper::getValue($extra, $extra_key, []);return ArrayHelper::getValue($arr, $val, '');}public static function dateIsEmpty($extra, $extra_key, $val, $row){return strtotime($val)>1000? $val:'';}public static function toFixed($extra, $extra_key, $val, $row){return (string)sprintf("%.{$extra_key}f", floatval($val));}public static function dateFormat($extra, $extra_key, $val, $row){return date('Y-m-d H:i:s',$val/1000);}public static function trim($extra, $extra_key, $val, $row){return str_replace(["\r", "\n", ","], ["", "", ","], $val);}public static function shopNameIsEmpty($extra, $extra_key, $val, $row){return !empty($val)? $val:'个⼈发布';}public static function extraConcat($extra, $extra_key, $val, $row){$arr = explode('-', $extra_key);foreach ($arr as$key => $value) {$val .= ArrayHelper::getValue($extra[$value.'Options'], $row[$value], ''); }return$val;}}原创内容,转载请声明出处!本⽂链接:。

php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析

php利用phpexcel插件实现数据的导入和导出(支持csvxlsxlsx格式和超过26个字段列)解析
.title h4{ border-bottom:2px solid #01AFD4; padding-bottom:8px;}
.title a{margin-top:-50ey是从1开始
$res = $this->excelToArray($savePath.$file_name,end($file_types));
//echo 12321321;exit;
//如果有表头,则过滤掉第一行
if($table_head)
unset($res[1]);
<link rel="apple-touch-icon-precomposed" href="" />
<meta name="-site-verification" content="5fNm7bQabR" />
<meta http-equiv="X-UA-Compatible" content="IE=8" />
}
if($tableid=="1"){
$rawdata_obj = $this->rawdata_pctmodel;
}elseif($tableid=="2"){
$rawdata_obj = $this->rawdata_applymodel;
}elseif($tableid=="3"){
$rawdata_obj = $this->rawdata_authmodel;
}
//该字段比较特殊,必须导入表中都有该字段
$data['month_number'] = $month_number;
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<body>
<input id="Button1" type="button" value="opencsv" onclick="javascript:method1()" />
</body>
demo.html的内容很简单,就是点击某个按钮后打开一个小窗口用来打开导出csv文件,而不用让当前页面跳转到新页面来导出csv。
demo.php的ห้องสมุดไป่ตู้容如下:
<?php
Header("Content-type: application/octet-stream; filename=\"目标地址流量排名.csv\"");
Header("Content-Disposition: attachment; filename=\"目标地址流量排名.csv\"");
?>
demo.php的内容主要是生成csv文件的文件名和内容,注意,csv文件中,主要用逗号作为列分隔符,用"\n"作为行分隔符。
之所以不导出excel文件,一是由于csv文件用excel就能打开,二是我没过多研究如何导出excel,不熟,三是就算研究熟了,八成也只能在ie里面导出,火狐估计不行。
demo.html的内容如下:
<script type="text/javascript" language="javascript">
function method1(){
window.open('demo.php');
}
</script>
echo "排名,目标,目标AS域,下行流量,上行流量,总流量,流量占比\n";
for($j=0; $j < 10; $j++)
echo "top".","."dst".","."as_name".","."in_bytes1".","."out_bytes1".","."total_bytes1".","."rate"."\n";
相关文档
最新文档