Esempio n. 1
0
        public void run(string text)
        {
            var filename   = "./" + text + ".txt";
            var importCore = new ExcelImportCore();

            importCore.LoadFile("./excel.xlsx");
            var ds = importCore.GetAllTables(false);

            Console.WriteLine(ds.Tables[0].Rows.Count);

            var       allTable    = ds.Tables[0];
            DataTable outputTable = new DataTable();

            outputTable = allTable.Copy();
            outputTable.Rows.Clear();
            outputTable.ImportRow(allTable.Rows[0]);//这是加入的是第一行

            List <string> excelArr = new List <string>();

            for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                excelArr.Add(allTable.Rows[i][0].ToString());
            }
            Console.WriteLine("excel.xlsx文件总行数:" + excelArr.Count);

            List <string> txtArr = new List <string>();

            //从头到尾以流的方式读出文本文件
            //该方法会一行一行读出文本
            using (System.IO.StreamReader sr = new System.IO.StreamReader(filename))
            {
                string str;
                while ((str = sr.ReadLine()) != null)
                {
                    txtArr.Add(str);
                }
            }
            Console.WriteLine("txt文件总行数:" + txtArr.Count);

            List <string> r = txtArr.Intersect(excelArr).ToList();

            Console.WriteLine("相同ID的总行数:" + r.Count);
            //List<string> r2 = txtArr.Except(excelArr).ToList();
            //Console.WriteLine("不同的总行数:" + r2.Count);


            Console.WriteLine("根据相同ID开始查找...");
            for (var i = 0; i < allTable.Rows.Count; i++)
            {
                if (r.Exists(p => p == allTable.Rows[i][0].ToString()))
                {
                    outputTable.ImportRow(allTable.Rows[i]);
                }
            }
            Console.WriteLine("根据相同ID查找的总行数:" + outputTable.Rows.Count);

            Console.WriteLine(" 开始写入新的excel,名称为:" + text + '-' + outputTable.Rows.Count + "-excel.xlsx");


            var exportCore = new ExportExcelCore();

            exportCore.RenderDataTableToExcel("./" + text + '-' + outputTable.Rows.Count + "-excel.xlsx", outputTable, "1", null);
            //exportCore.RenderDataTableToExcelHasTemplate(sdiag.FileName, file +"-excel.xlsx", dt, 3, 1);
        }
        public string Import(FormCollection context)
        {
            var filename   = Request["file"];
            var importCore = new ExcelImportCore();

            importCore.LoadFile(Server.MapPath(filename));
            var ds = importCore.GetAllTables(true);

            string        message = "";
            List <object> list    = new List <object>();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                string srcname = PublicMethod.GetString(row["厂家名称型号"]).Trim();
                if (!string.IsNullOrEmpty(srcname))
                {
                    var srcModels = SRCDal.Instance.GetWhere(new { FSRCNAME = srcname }).ToList();
                    if (srcModels.Count > 0)
                    {
                        ProductViewModel model = ProductViewDal.Instance.Get(srcModels[0].FPRODUCTID);
                        if (model != null)
                        {
                            list.Add(new
                            {
                                FID             = model.FID,
                                FMODEL          = model.FMODEL,
                                FITEMID         = model.FID,
                                FPRODUCTNAME    = model.FPRODUCTNAME,
                                FPRODUCTTYPE    = model.FPRODUCTTYPE,
                                FPRODUCTCODE    = model.FPRODUCTCODE,
                                FASKQTY         = row["主单位数量"].ToDecimal(),
                                FUNITNAME       = row["主计量单位"].ToStr(),
                                FUNITID         = model.FUNITID,
                                FORDERUNIT      = row["采购单位"].ToStr(),
                                FORDERUNITQTY   = row["采购单位数量"].ToDecimal(),
                                FBRANDID        = model.FBRANDID,
                                FBRANDNAME      = model.FBRANDNAME,
                                FPKGFORMAT      = model.FPKGFORMAT,
                                FCATEGORYID     = model.FTYPEID,
                                FWEIGHT         = model.FWEIGHT,
                                FVOLUME         = model.FVOLUME,
                                FSTATUS         = model.FSTATUS,
                                FNEEDDATE       = row["要求发货时间"].ToStr(),
                                FUPDATETIME     = model.FUPDATETIME,
                                FSTATUSNAME     = "草稿",
                                FWEIGHTUNIT     = "KG",
                                FRATE           = model.FRATE,
                                FCOLORNO        = row["色号"].ToStr(),
                                FREMARK         = row["销区备注"].ToStr(),
                                FWHOLESALEPRICE = model.FPRIORITYP_L_RICE,
                                FBATCHNO        = model.FBATCHNO,
                                FADVQTY         = 0
                            });
                        }
                        else
                        {
                            message += string.Format("商品编码:{0}不存在;", srcModels[0].FPRODUCTID);
                        }
                    }
                    else
                    {
                        message += string.Format("厂家代码:{0}不存在;", srcname);
                    }
                }
            }

            return(JSONhelper.ToJson(new { list = list, message = message }));
        }