首页 > 开发 > PHP > 正文

PHP实现CSV文件的导入和导出类

2024-05-04 23:33:19
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP实现CSV文件的导入和导出类,实例分析了php针对csv文件的操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP实现CSV文件的导入和导出类。分享给大家供大家参考。具体如下:

 

 
  1. <?php 
  2. /** 
  3. * CSV 文件处理类 
  4. */ 
  5. class Csv{ 
  6. public $csv_array//csv数组数据 
  7. public $csv_str//csv文件数据 
  8. public function __construct($param_arr$column){ 
  9. $this->csv_array = $param_arr
  10. $this->path = $path
  11. $this->column = $column
  12. /** 
  13. * 导出 
  14. * */ 
  15. public function export(){ 
  16. if(emptyempty($this->csv_array) || emptyempty($this->column)){ 
  17. return false; 
  18. $param_arr = $this->csv_array; 
  19. unset($this->csv_array); 
  20. $export_str = implode(',',$param_arr['nav'])."n"
  21. unset($param_arr['nav']); 
  22. //组装数据 
  23. foreach($param_arr as $k=>$v){ 
  24. foreach($v as $k1=>$v1){ 
  25. $export_str .= implode(',',$v1)."n"
  26. //将$export_str导出 
  27. header( "Cache-Control: public" ); 
  28. header( "Pragma: public" ); 
  29. header("Content-type:application/vnd.ms-excel"); 
  30. header("Content-Disposition:attachment;filename=txxx.csv"); 
  31. header('Content-Type:APPLICATION/OCTET-STREAM'); 
  32. ob_start();  
  33. // $file_str= iconv("utf-8",'gbk',$export_str); 
  34. ob_end_clean(); 
  35. echo $export_str
  36. /** 
  37. * 导入 
  38. * */ 
  39. public function import($path,$column = 3){ 
  40. $flag = flase; 
  41. $code = 0; 
  42. $msg = '未处理'
  43. $filesize = 1; //1MB 
  44. $maxsize = $filesize * 1024 * 1024; 
  45. $max_column = 1000; 
  46.  
  47. //检测文件是否存在 
  48. if($flag === flase){ 
  49. if(!file_exists($path)){ 
  50. $msg = '文件不存在'
  51. $flag = true; 
  52. //检测文件格式 
  53. if($flag === flase){ 
  54. $ext = preg_replace("/.*.([^.]+)/","$1",$path); 
  55. if($ext != 'csv'){ 
  56. $msg = '只能导入CSV格式文件'
  57. $flag = true; 
  58. //检测文件大小 
  59. if($flag === flase){ 
  60. if(filesize($path)>$maxsize){ 
  61. $msg = '导入的文件不得超过'.$maxsize.'B文件'
  62. $flag = true; 
  63. //读取文件 
  64. if($flag == flase){ 
  65. $row = 0; 
  66. $handle = fopen($path,'r'); 
  67. $dataArray = array(); 
  68. while($data = fgetcsv($handle,$max_column,",")){ 
  69. $num = count($data); 
  70. if($num < $column){ 
  71. $msg = '文件不符合规格真实有:'.$num.'列数据'
  72. $flag = true; 
  73. break
  74. if($flag === flase){ 
  75. for($i=0;$i<3;$i++){ 
  76. if($row == 0){ 
  77. break
  78. //组建数据 
  79. $dataArray[$row][$i] = $data[$i]; 
  80. $row++; 
  81. return $dataArray
  82. $param_arr = array
  83. 'nav'=>array('用户名','密码','邮箱'), 
  84. array(0=>array('xiaohai1','123456','xiaohai1@zhongsou.com'), 
  85. 1=>array('xiaohai2','213456','xiaohai2@zhongsou.com'), 
  86. 2=>array('xiaohai3','123456','xiaohai3@zhongsou.com'
  87. )); 
  88. $column = 3; 
  89. $csv = new Csv($param_arr$column); 
  90. //$csv->export(); 
  91. $path = 'C:/Documents and Settings/Administrator/Temp/txxx.csv'
  92. $import_arr = $csv->import($path,3); 
  93. var_dump($import_arr); 
  94. ?> 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表