Magento 对csv表格的导入功能 高级自定义部分!

magento自己带有导入导出功能

后台system-->import/export-->Advanced Profiles

进入后点击add new profiles

就可以新建一个规则了

Profile Name *是名字

Actions XML *是对应的参数

譬如例子:

<action type="dataflow/convert_adapter_io" method="load">
    <var name="type">file</var>
    <var name="path">var/import</var>
    <var name="filename"><![CDATA[configproduct.csv]]></var>
    <var name="format"><![CDATA[csv]]></var>
</action>

<action type="dataflow/convert_parser_csv" method="parse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA["]]></var>
    <var name="fieldnames">true</var>
    <var name="store"><![CDATA[0]]></var>
    <var name="number_of_records">1</var>
    <var name="root_catalog_id"><![CDATA[2]]></var>
    <var name="reimport_images"><![CDATA[true]]></var>
    <var name="deleteall_andreimport_images"><![CDATA[true]]></var>
    <var name="exclude_images"><![CDATA[false]]></var>
    <var name="exclude_gallery_images"><![CDATA[false]]></var>
    <var name="decimal_separator"><![CDATA[.]]></var>
    <var name="adapter">catalog/convert_adapter_productimport</var>
    <var name="method">parse</var>
</action>

解析:

file是文件类型

path是csv文件路径

filename是csv文件名字

format是csv格式

后面的配置是相应的文件格式

用他,可以导入您想要导入的数据,也就是magento实现了这个csv导入的框架,在相应的文件

catalog/convert_adapter_productimport

public function saveRow( array $importData )函数里面$importData

这个数据就是csv文件中的一行,每一列是这个数组中的一个元素!

然后使用magento的机制保存就可以了

上面我只是大致的一说,具体的研究,您可以下载一个免费的magento导入导出插件。然后研究里面的代码,然后就是研究如何插入数据,譬如写一个给现有产品批量导入tag的函数,例子如下:

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to [email protected] so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    Mage
 * @package     Mage_Catalog
 * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

class Mage_Catalog_Model_Convert_Adapter_Productimport
    extends Mage_Eav_Model_Convert_Adapter_Entity
{

   public function parse()
    {
        $batchModel = Mage::getSingleton('dataflow/batch');
        /* @var $batchModel Mage_Dataflow_Model_Batch */

        $batchImportModel = $batchModel->getBatchImportModel();
        $importIds = $batchImportModel->getIdCollection();

        foreach ($importIds as $importId) {
            //print '<pre>'.memory_get_usage().'</pre>';
            $batchImportModel->load($importId);
            $importData = $batchImportModel->getBatchData();

            $this->saveRow($importData);
        }
    }

   public function saveRow( array $importData )
    {
		$default_type = 1; //amazon
		$default_status = 1; //weicaiji

		if(!isset($importData['type'])){
			$type = $default_type;
		}else{
			$type = $importData['type'];
		}
		$create_date_time = Mage::getModel("core/date")->date("Y-m-d H:i:s");
        if ( isset( $importData['sku'] ) && $importData['sku'] !="" ) {
			$sku = $importData['sku'];
			$no = $importData['no'];
			$pro_sku = Mage::getModel("getreview/sku");
			$pro = $pro_sku	->getCollection()
							->addFieldToFilter("sku",array("eq"=>$type))
							->addFieldToFilter("no",array("eq"=>$no))
							->addFieldToFilter("type",array("eq"=>$type))
							->getFirstItem()
						;
			if($pro->getId()){
				$this->addException(
                       "this sku:".$sku.",no:".$no.",type:".$type." is exist;"
                    );
				return ture;
			}
            try {
                $pro_sku->setType($type)
						->setStatus($default_status)
						->setCreateDateTime($create_date_time)
						->setSku($sku)
						->setNo($no)
						->save()
						;

            }catch ( Exception $e ) {

            }

        }

        return true;
    }

}

Magento 对csv表格的导入功能 高级自定义部分!,布布扣,bubuko.com

时间: 2024-10-20 01:19:02

Magento 对csv表格的导入功能 高级自定义部分!的相关文章

C#Excl表格的导入功能

1,添加NOPI的引用 下载地址:http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=npoi&DownloadId=1432518&FileTime=130691232697500000&Build=21066 2,添加命名空间 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel; /// <

ligerui 高级自定义查询

//扩展 ligerGrid 的 搜索功能(高级自定义查询).应用: demos/filter/grid.htm $.ligerui.controls.Grid.prototype.showFilter = function () { var g = this, p = this.options; if (g.winfilter) { g.winfilter.show(); return; } var filtercontainer = $('<div id="' + g.id + '_f

csv表格处理(下)--纯JS解析导入csv

多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法.其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来处理,而现在用JS解析的话就没有那么幸运了,一切都要自己撸一个出来 或者 →_→ 引入一个库. JS导入CSV--读取文本 JS能前端读取文件吗?以前只有通过 IE的ActiveXObject或者Flash才能本地读取文件.随着H5的出现,这个问题有普遍解了.Talk is cheap,show you the code $.fn.csv2arr

OpenCart 之 CSV 格式商品导入

OpenCart 之 CSV 格式商品导入 OpenCart 之 CSV 格式商品导入   3 评价  |  如果您对本商品有什么问题或经验,请在此留下您的意见和建议! 后台登录信息: 用户名: demo 密码: demo后台演示网址型 号: COC-A0002 ¥115.00 税前: ¥115.00购买所需积分: 60 购买数量: +- * 扩充功能安装:              --- 请选择 ---                          自己安装               

OpenCart 之 CSV 格式商品导入 – 如何导入商品主图片和附加图片?

OpenCart 之 CSV 格式商品导入 – 如何导入商品主图片和附加图片? 1. 在文件中定义多个附加图片 可以为一个商品导入多个图片.这些图片需要以"附加图片分隔符"来分割,而附加图片分隔符的定义在扩充功能配置页面.下面是一个带有URL链接的多个图片的填写格式:-,"http://www.example.com/image1.png:::http://www.example.com/image2.png:::http://www.example.com/image3.p

017 区域导入功能 - bos

一.jQuery的OCUpload 1.OCUpload(One Click Upload) <script src="${pageContext.request.contextPath}/js/jquery.ocupload-1.1.2.js"></script> 2.传统文件上传: <1>页面要有form表单,action为提交地址,method="post",注意enctype="multipart/form-da

解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到数据库表中.然而一直是在做重复工作,写过不计其数的Excel导入程序,每次只是满足于问题解决,后来终于找到一个方法,实现通用的Excel数据导入. 设计通用的Excel导入功能,第一个实现要求是不能依赖Excel,客户的电脑或服务器很有可能没有安装Excel,所以微软的Office Interop一

【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取

在入门系列的教程中,我们常用 d3.json() 函数来读取 json 格式的文件.json 格式很强大,但对于普通用户可能不太适合,普通用户更喜欢的是用 Microsoft Excel 或 OpenOffice Calc 等生成的表格文件,因为简单易懂,容易编辑.                       Microsoft Excel 通常会保存为 xls 格式, OpenOffice Calc 通常会保存为 ods 格式.这些格式作为表格文件来说都很强大,但要读取它们是有些麻烦的,D3

php开发中Excel导入功能的具体实现方法

对于在做php开发项目中,一般的项目设计到最多用到的是Excel的导出功能,而对于其导入功能一般是很少见的,而且对于php开发中Excel的导入功能也要比导出功能开发起来更困难一些,那么今天就来分享一下php开发中Excel导入功能的具体实现步骤: 1.首先将下载下来的PHP Excel插件代码放入项目/Thinkphp/Extend/Vendor/下; 2.在模板添加导入功能; html代码实现如下:<form action="{:U('Turntable/imports')}"