Ejemplo n.º 1
0
        /// <summary>
        /// 文件结构检查
        ///  正确结构: Folder-|
        ///                   -xls文件.xls
        ///                   -图片文件夹
        ///  excel读取为              
        /// </summary>
        /// <param name="folderPath"></param>
        /// <param name="productsHasPicture"></param>
        /// <param name="productsNotHasPicture"></param>
        /// <param name="imagesHasProduct"></param>
        /// <param name="imagesHasNotProduct"></param>
        public void CheckSingleFolder(string folderPath
            , out IList<Product> productsHasPicture
            , out IList<Product> productsNotHasPicture
            , out IList<Product> productsExistedInDB
            , out IList<FileInfo> imagesHasProduct
            , out IList<FileInfo> imagesHasNotProduct)
        {
            DirectoryInfo dir = new DirectoryInfo(folderPath);
            FileInfo[] excelFiles = dir.GetFiles("*.xls", SearchOption.TopDirectoryOnly);
            if (excelFiles.Length != 1)
            {
                throw new Exception("错误,文件夹 " + folderPath + " 应该有且仅有一个excel文件");
            }
            FileInfo excelFile = excelFiles[0];
            Stream stream = new FileStream(excelFile.FullName, FileMode.Open);
            IDataTableConverter<Product> productReader = new ProductDataTableConverter();
            string errMsg;
            DataTable dt = new NLibrary.ReadExcelToDataTable(stream).Read(out errMsg);
            IList<Product> products = productReader.Convert(dt);
            sbMsg.AppendLine(products.Count + ":待导入");

            sbMsgForLog.AppendLine(products.Count+"-待导入产品数量-----"+dir.Name);
            //排除数据库内重复的数据
            IList<Product> validItems = products;
            productsExistedInDB = new List<Product>();
            if (CheckWithDatabase)
            {
                DateTime beginCheckDbExists = DateTime.Now;

                validItems = BizProduct.CheckSupplierExisted(
                    products, out productsExistedInDB);
                Console.WriteLine("Time Cost CheckDB:" + (DateTime.Now - beginCheckDbExists).TotalSeconds);
                sbMsg.AppendLine(productsExistedInDB.Count + ":已存在");
                foreach (Product pi in productsExistedInDB)
                {
                    sbMsg.AppendLine("     名称:" + pi.Name + "型号:" + pi.ModelNumber + "供应商名称:" +BizSupplier.GetByCode( pi.SupplierCode).Name);
                }
            }
            //
            DateTime beginCheckImage = DateTime.Now;
            CheckProductImages(validItems, folderPath, out productsHasPicture
               , out productsNotHasPicture
               , out  imagesHasProduct
               , out  imagesHasNotProduct);
            Console.WriteLine("Time Cost CheckImage:" + (DateTime.Now - beginCheckImage).TotalSeconds);
            sbMsg.AppendLine(productsNotHasPicture.Count + ":无图片");
            foreach (Product pnopic in productsNotHasPicture)
            {
                sbMsg.AppendLine("     名称:" + pnopic.Name + "型号:" + pnopic.ModelNumber + "供应商编码:" + pnopic.SupplierCode);

            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 从excel文件中读取产品信息和内嵌图片
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="errMsg"></param>
 /// <param name="allPictures"></param>
 /// <returns></returns>
 public IList<Product> ReadListFromExcelWithAllPictures(System.IO.Stream stream, out string errMsg, out System.Collections.IList allPictures)
 {
     IDataTableConverter<Product> productReader = new ProductDataTableConverter();
     ImportToDatabaseFromExcel<Product> importor = new ImportToDatabaseFromExcel<Product>(productReader, this);
     return importor.ReadListWithAllPictures(stream, out  errMsg, out allPictures);
 }
Ejemplo n.º 3
0
 public void ImportProductFromExcel(System.IO.Stream stream, out string errMsg)
 {
     IDataTableConverter<Product> productReader
         = new ProductDataTableConverter();
     ImportToDatabaseFromExcel<Product> importor
         = new ImportToDatabaseFromExcel<Product>(productReader, bizProduct);
     importor.ImportXslData(stream, out  errMsg);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 从excel文件中读取产品信息
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="errMsg"></param>
 /// <returns></returns>
 public IList<Product> ReadListFromExcel(System.IO.Stream stream, out string errMsg)
 {
     IDataTableConverter<Product> productReader = new ProductDataTableConverter();
     ImportToDatabaseFromExcel<Product> importor = new ImportToDatabaseFromExcel<Product>(productReader, this);
     return importor.ReadList(stream, out  errMsg);
 }
Ejemplo n.º 5
0
 private IList<Product> ReadProductsFromExcel(Stream stream)
 {
     IDataTableConverter<Product> productReader = new ProductDataTableConverter();
     string errMsg;
     DataTable dt = new NLibrary.ReadExcelToDataTable(stream).Read(out errMsg);
     IList<Product> products = productReader.Convert(dt);
     return products;
 }