phpexcel导入导出(轻量) 淘宝导入

简介:

excel单元格数字变成字符串方法 '1001010002400000,数值前加单引号

当excel文件中的数据设置过,导入的数据和excel显示的不同,单个修改数据个单元格格式又很麻烦,这时把excel另存为csv格式即可,用文本方式打开看数据

导入$data->sheets

使用PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader

Java代码   收藏代码
  1. <?php  
  2. //$data_header_var = array(1=>'$incrementId',2=>'$price');  
  3. function Excel2Db($fileName, $data_header_var=array()){  
  4.     require_once 'Excel/reader.php';  
  5.     $data = new Spreadsheet_Excel_Reader();  
  6.     $data->setOutputEncoding('utf-8'); //gbk  
  7.     $data->read($fileName);  
  8.       
  9.     $numRows = $data->sheets["0"]['numRows'];  
  10.     for ($i = 2; $i <= $numRows; $i++) {  
  11.         foreach ($data_header_var as $j => $var){  
  12.             eval($var.'= $data->sheets["0"]["cells"][$i][$j];');  
  13.         }  
  14.         //save2Db  
  15.     }  
  16. }  
  17. /*$data2 = $data->sheets["0"]["cells"]; 
  18. unset($data2['1']); 
  19. foreach ($data2 as $i=> $v) { 
  20.     foreach ($data_header_var as $j => $var){ 
  21.         eval($var.'= $v[$j];');              
  22.     }*/  
  23.       
  24. function Excel2Array($fileName, $data_header_var=array()){  
  25.     require_once 'Excel/reader.php';  
  26.     $data = new Spreadsheet_Excel_Reader();  
  27.     $data->setOutputEncoding('utf-8'); //gbk  
  28.     $data->read($fileName);  
  29.     $dataRows = $lineData = array();  
  30.   
  31.     $numRows = $data->sheets["0"]['numRows'];  
  32.     for ($i = 2; $i <= $numRows; $i++) {  
  33.         foreach ($data_header_var as $j => $var){  
  34.             $lineData[$var] = $data->sheets["0"]["cells"][$i][$j];  
  35.         }  
  36.         $dataRows[] = $lineData;  
  37.     }  
  38.     return $dataRows;  
  39. }  
 导出
Java代码   收藏代码
  1. <?php  
  2. /*$excel = new Excel(); 
  3. //$excel->setEncode("utf-8","gb2312"); //设置编码 
  4.  
  5. $titleData = array("name","price","content","total");//设置标题栏 
  6. $data      = array( 
  7.     array("ab","ac","ad","ae"),  
  8.     array("abc","acc","adc","aec"),  
  9.     array("abd","acd","add","aed"),  
  10.     't'=>array("abe","ace","ade","aee"),  
  11. ); 
  12.  
  13. $excel->getExcel($titleData, $data, "demo"); 
  14. */  
  15. class Excel {  
  16.     var $inEncode  = "utf-8"//一般是页面编码  
  17.     var $outEncode = "utf-8"//一般是Excel文件的编码  
  18.     var $content   = '';  
  19.       
  20.     /** 
  21.     *设置编码 
  22.     */  
  23.     public function setEncode($incode, $outcode){  
  24.         $this->inEncode  = $incode;  
  25.         $this->outEncode = $outcode;  
  26.     }  
  27.     /** 
  28.     *设置Excel的行记录 
  29.     */  
  30.     public function setRow($lineData){  
  31.         $title = "";  
  32.         foreach($lineData as $v){  
  33.             if($this->inEncode != $this->outEncode){  
  34.                 $title .= iconv($this->inEncode,$this->outEncode,$v)."\t";  
  35.             }else{  
  36.                 $title .= $v."\t";  
  37.             }  
  38.         }  
  39.         $title .= "\n";  
  40.         return $title;  
  41.     }  
  42.     /** 
  43.     *设置Excel内容 
  44.     */  
  45.     public function setRows($array){  
  46.         $content = "";  
  47.         foreach($array as $k => $v){  
  48.             $content .= $this->setRow($v);  
  49.         }  
  50.         return $content;  
  51.     }  
  52.     /** 
  53.     *生成并自动下载Excel 
  54.     * $titleData 标题栏数组  
  55.     * $array 内容数组 
  56.     * $filename 文件名称 (为空,已当前日期为名称) 
  57.     */  
  58.     public function getExcel($titleData, $array, $filename = ''){  
  59.         if($filename==''){  
  60.             $filename = date("Y-m-d");  
  61.         }  
  62.         $title   = $this->setRow($titleData);  
  63.         $content = $this->setRows($array);  
  64.         header("Content-type:application/vnd.ms-excel");  
  65.         header("Content-Disposition:filename=".$filename.".xls");  
  66.         echo $title;  
  67.         echo $content;  
  68.     }  
  69. }  
   php读取淘宝数据包csv文件  unicode
Java代码   收藏代码
  1. public static function fopen_utf8($filename)  
  2. {  
  3.     $encoding = '';  
  4.     $handle = fopen($filename, 'r');  
  5.     $bom = fread($handle, 2);  
  6.     rewind($handle);  
  7.     if ($bom === chr(0xff) . chr(0xfe) || $bom === chr(0xfe) . chr(0xff)) {  
  8.         // UTF16 Byte Order Mark present  
  9.         $encoding = 'UTF-16';  
  10.     } else {  
  11.         $file_sample = fread($handle, 1000) + 'e'//read first 1000 bytes  
  12.         rewind($handle);  
  13.   
  14.         $encoding = mb_detect_encoding($file_sample, 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');  
  15.     }  
  16.   
  17.     if ($encoding) {  
  18.         stream_filter_append($handle, 'convert.iconv.' . $encoding . '/UTF-8');  
  19.     }  
  20.     return ($handle);  
  21. }  
  22. //得到csv data  
  23. public function getCsvFileData($filename)  
  24. {  
  25.     $handle = Helper::fopen_utf8($filename, "r");  
  26.       
  27.     $csvData = array();  
  28.     for ($j = 1; !feof($handle); $j++) {  
  29.         $line = fgets($handle);  
  30.         $val = explode("\t", $line);  
  31.         if ($j > 1) {  
  32.             $line = array(  
  33.                 'title' => $val[0],  
  34.                 //'cate' => $val[1],  
  35.                 'price' => $val[2], //价格  
  36.                 'inventory' => trim($val [3]), //数量  
  37.                 'descript' => trim($val [4]), //描述  
  38.                 'import_images' => trim($val[5]), //图片  
  39.                 'sku' => trim($val[6]), //商家编码  
  40.                 'weight' => trim($val[7]), //重量  
  41.             );  
  42.   
  43.             $csvData[] = $line;  
  44.         }  
  45.     }  
  46.     return $csvData;  
  47. }  
  48.   
  49. //校验数据  
  50. public function checkProductImportData($adminId, $csvData)  
  51. {  
  52.     $checkArray = array();  
  53.     foreach ($csvData as $product) {  
  54.         $checkArray[] = $product['sku'];  
  55.     }  
  56.     $list = 'db中的sku列表在文件sku中的'  
  57.     $result = array('status' => 10000'msg' => '');  
  58.     if (count($list) == count($checkArray)) {  
  59.         $result['status'] = 2;  
  60.         $result['msg'] = '文件里的商品已经导入过';  
  61.     } elseif (count($list) > 0) {  
  62.         $dbhasskulist = array();  
  63.         $alllist = self::model()->findAllSkuFromDb();  
  64.         foreach ($alllist as $info) {  
  65.             if ($info->sku && in_array($info->sku, $checkArray)) {  
  66.                 $dbhasskulist[] = $info->sku;  
  67.             }  
  68.         }  
  69.         $result['status'] = 1;  
  70.         $result['msg'] = "商品货号重复:" . implode(",", array_unique($dbhasskulist));  
  71.     }  
  72.     return $result;  
  73. }  
 
相关文章
laravel8 简单Excel导入、导出
如果没有安装laravel8,我们可以去官网有安装方式
|
1月前
|
存储 PHP Apache
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
原生php实现大案例(特色:不登录不能使用功能 注册 登录 文件上传 发帖 列表页 详情页 )提供sql
原生php实现大案例(特色:不登录不能使用功能 注册 登录 文件上传 发帖 列表页 详情页 )提供sql
|
3月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的商城购物管理系统分为前后端(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的商城购物管理系统分为前后端(源码+数据库+程序配置说明书+程序使用说明书)
|
3月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的在线音乐网站系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的在线音乐网站系统(源码+数据库+程序配置说明书+程序使用说明书)
|
3月前
|
小程序 关系型数据库 MySQL
基于Python和mysql开发的今天吃什么微信小程序(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的今天吃什么微信小程序(源码+数据库+程序配置说明书+程序使用说明书)
|
8月前
|
SQL 关系型数据库 MySQL
4.6 MySQL数据库导入与导出攻略
4.6 MySQL数据库导入与导出攻略
140 0
|
9月前
|
PHP
php导入Excel表格接口
php导入Excel表格接口
59 0
|
9月前
|
安全 前端开发
fastadmin自定义excel文件导入,实现文件上传功能 --已实现
fastadmin自定义excel文件导入,实现文件上传功能 --已实现
499 0