生成.csv文件
function createCsvFile(){
$list = array ('姓名,性别,年龄,工作','张三,男,33,php','李三,男,33,Java');
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
$line=iconv("UTF-8","GB2312//IGNORE",$line);
fputcsv($fp, explode(',', $line));
}
fclose($fp);
}
读取.csv文件
function getCsvFileArr(){
$source = fopen('file.csv', 'r');
while (!feof($source)){
$data = fgetcsv($source);
if(is_array($data)){
foreach($data as $k=>&$v){
$v=iconv("GB2312","utf-8",$v);
}
$csvArr[]=$data;
}
}
fclose($source);
return $csvArr
//echo '<pre>'; print_r($csvArr);
}
下载已有的.csv文件
$fileName = "file.csv";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $fileName);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($fileName));
readfile($fileName);
下载数据为.csv文件(.csv文件不存在)
/**
* 下载 CSV 数据为CSV文件
* $data=array (array('张三','男','33','php'),array ('李三','男','33','Java'));
* $title_arr=array ('姓名','性别','年龄','工作');
* 注意。 默认csv文件字符串需要 ‘ " ’ 环绕,否则导入导出操作时可能发生异常。
*/
public 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; ++$i) {
if($i < $nums -1)
{
$csv_data .= '"' . $title_arr[$i] . '",';
}
else
{
$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]);
if( $i < $nums - 1)
{
$csv_data .= '"' . $row[$i] . '",';
}
else
{
$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;
}
$file = 'score.csv';
$fh = fopen($file,'rb');
/*
思路1:每次读一行,
每一行的内容再逗号拆成数组
while(!feof($fh)) {
$row = fgets($fh);
print_r(explode(',',$row));
}
*/
// fgetcsv 从文件指针中读入一行并解析 CSV 字段 ,返回一个包含这些字段的数组
while(!feof($fh)) {
$row = fgetcsv($fh);
print_r($row);
}
$val['comment']=iconv("GB2312","utf-8",$val[1]);
string iconv ( string $in_charset
, string $out_charset
, string $str
)
in_charset
- 输入的字符集。
out_charset
- 输出的字符集。
如果你在 out_charset
后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,str
从第一个无效字符开始截断并导致一个 E_NOTICE
。
str
- 要转换的字符串。