zoukankan      html  css  js  c++  java
  • 将淘宝数据包导入自己的商城系统

    淘宝网有一个淘宝助理,可以方便的将淘宝店的商品资源导出成csv格式的数据包。很多商城系统为了能快速输入商品,都会要求开发者能最大限度的利用淘宝数据包直接导入产品数据。

    当然,数据包的产品字段与商城的产品表字段肯定不可能完全一致,但"宝贝名称","宝贝价格","宝贝描述"这三个字段,几乎是所有商城系统都有的.


    下面是二种处理方法:

    一、直接分析csv

    1.淘宝的csv数据包是用"\t"做为字段间的分隔符,每行数据是用"\n"做为行分隔符
    2.要注意的是:宝贝描述(html代码)本身也会包含换行符号,不过不是"\n",而是"\r\n"---幸好是这样,不然的话,宝贝描述本身的换行符与数据每行的分隔符混在一起,就很难区分了.

    下面是示例关键代码;

    if (IsPostBack)
     {
           HttpFileCollection fc = Request.Files;
                    
            for (int i = 0; i < fc.Count; i++)
             {
                    HttpPostedFile _file = fc[i];
                    string ext = Path.GetExtension(_file.FileName).ToLower();
                    string type = _file.ContentType;
                    if (ext == ".csv" && type == "application/vnd.ms-excel")
                        {
                            StreamReader sr = new StreamReader(_file.InputStream);
    
                            string sHeader = sr.ReadLine();
                            string sBody = sr.ReadToEnd();
    
                            string sTemp = sBody.Replace("\r\n", "");//将宝贝描述html代码中的"\r\n"去掉
    
                     string[] arrData = sTemp.Split('\n'); //这里已经将每行的数据保存到数组arrData里了,数组里的每个元素再用"\t"拆分,就是每行各字段的值
    
    //...
    


    优缺点:通用性强,也不依赖于其它任何组件,简单高效。但是如果以后淘宝的html编辑器修改了,比如保存时把"\r\n"换成"\n",这种方法就不管用了.


    二、借用oledb把数据包当作db来操作

    oledb可以方便的操作access,excel等内容,我们可以把cvs文件在excel里另存为xls格式,然后就可以用oledb连接,用sql来查询了

    HttpFileCollection fc = Request.Files;
    
                    if (fc.Count <= 0) {
                        Utils.Alert("请先上传数据包!", "javascript:window.history.back");
                    }
    
                   
                    for (int i = 0; i < fc.Count; i++)
                    {
                        HttpPostedFile _file = fc[i];
                        string ext = Path.GetExtension(_file.FileName).ToLower();
                        string type = _file.ContentType;
                        if (ext == ".xls" && (type == "application/octet-stream"))
                        {
                            string _path = Server.MapPath("/upload/xls/");
                            Utils.CreateDir(_path);
                            string _filePath = _path + "product.xls";
                            _file.SaveAs(_filePath);//先保存到服务器
    
                            DataTable dtTable = new DataTable();
    
                            #region
                            using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + _filePath + ";Extended Properties=Excel 8.0;"))
                            {
                                conn.Open();
    
                                //获取Sheet的名字。
                                DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
                                OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + schemaTable.Rows[0]["TABLE_NAME"] + "]", conn);//默认查询第一个工作表
                                try
                                {
                                    adapter.Fill(dtTable);
                                }
                                catch (Exception ex)
                                {
                                    //...
                                }
                            }
    
                            //to do list。。。
    
                        }                   
                        else {
                            Utils.Alert("数据包格式不对!", "javascript:window.history.back()");
                        }
                    }
    

    优缺点:使用方便,可以把数据包当成常规的DataTable来操作,方便了数据库开发人员。但是服务器上必须要有oledb组件(而且oledb在64位系统下默认是跑不起来的)

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Xshell的一些使用方法和注意事项
    adobe premiere pro cc2015.0已停止工作 解决办法
    视频播放效果--video.js播放mp4文件
    centos 7.0 编译安装php 7.0.3
    centos 7.0 安装nginx 1.9.10
    centos 7.0 firewall 防火墙常用命令
    webstorm 更改默认服务器端口
    css3 动画效果 定义和绑定执行
    css 图片垂直居中总结
    JS 面向对象随笔
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1750597.html
Copyright © 2011-2022 走看看