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. }  

 

时间: 2024-11-08 17:44:30

phpexcel导入导出(轻量) 淘宝导入的相关文章

php mysql数据的导入导出,数据表结构的导入导出

实现数据的导入导出,数据表结构的导入导出 ********************************************************/         //         //包含Mysql数据库操作文件         //         require_once("MysqlDB.php");          /******************************************************* **类    名:MysqlDB

5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

 1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制. 3 创建固定集合使用命令: db.createCollection("collectionName",{capped:true,size:100000,max:100}); size:指定集合大小,单位为KB,max指定文档的数量 当指定文档数量上限时,

SQL Server教程:三种导入导出数据使用方式比较

  在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式

PHP导入导出Excel代码_php技巧

一.导入 导入需要使用能读取Excel的组件,网上也有比较好的组件,这里分享我使用的:下载  提取码:vxyn.(注意两个文件有引用关系) <?php //传入要导入的Excel的文件名 function import_to_DB($filename) { require_once'reader.php'; $data = new Spreadsheet_Excel_Reader(); //创建读取Excel的对象 $data->setOutputEncoding('utf-8'); //设置

SQL Server各种导入导出数据方式的比较

本文为原创,如需转载,请注明作者和出处,谢谢!本文曾发表于IT168:http://tech.it168.com/db/s/2006-08-02/200608020911005.shtml     当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理.     在SQL Server中主要有三

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select

单表导入/导出文本文件

/*--实现数据导入/导出的存储过程  可以实现导入/导出 指定表 到文本文件 支持自定义行/列分隔符 --邹建 2003.07--*/ /*--调用示例导出调用示例--导出指定表,这里指定导出表:地区资料exec file2table 'zj','','','c:\zj.txt','xzkh_new..地区资料',@rowsplit=',' 导入调用示例--导入指定表,这里指定导入表:地区资料exec file2table 'zj','','','c:\zj.txt','xzkh_sa..地区

SQL Server三种导入导出数据方式比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

SQL Server数据导入导出技术概述与比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比