protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo) { try { if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false) { NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_)); return false; } string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_]; Microsoft.Office.Interop.Excel.Application ap = null; Workbook wb = null; Worksheet ws = null; HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws); Range tRange = null; string tempString = ""; string comparesitename = ""; Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_; Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_; Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_; Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_; Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_; Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_; Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_; Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_; Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_; Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_; Int32 ExData_OpCount_1 = 5; Int32 ExData_OpCount_2 = 7; Int32 ExData_OpCount_3 = 9; Int32[] ArrBuyCnt = new Int32[3] { 0, 0, 0 }; if (nCurrentRow > 0) ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1)); while (true) { try { tRange = ws.Cells[nCurrentRow, 1]; comparesitename = Convert.ToString(tRange.Value2); tRange = ws.Cells[nCurrentRow, ExData_Option]; if (tRange == null) break; tempString = tRange.Value2; if (tempString == null) { break; } COrderData pExcelData = new COrderData(); pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_; pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_; pExcelData.ExData_Option_ = tempString; pExcelData.ExData_OptionOriginal_ = tempString; pExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsNick_ = pChannelGoodInfo.GoodsName_; pExcelData.goodsCode_ = pChannelGoodInfo.Goods_Code_; tRange = ws.Cells[nCurrentRow, ExData_Coupncode]; if (tRange == null) break; pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2); if (pExcelData.channelOrderCode_ == null) break; pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", ""); pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim(); // 공백 제거 tRange = ws.Cells[nCurrentRow, ExData_Buyer]; pExcelData.orderName_ = Convert.ToString(tRange.Value2); if (pExcelData.orderName_ == null) pExcelData.orderName_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Cancel]; pExcelData.ExData_Cancel_ = tRange.Value2; if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Use]; pExcelData.ExData_Use_ = tRange.Value2; if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Buyphone]; pExcelData.orderPhone_ = Convert.ToString(tRange.Value2); if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = ""; pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", ""); if (ExData_Price != 0) { tRange = ws.Cells[nCurrentRow, ExData_Price]; if (tRange.Value2 != null) {// 돈에 , 가 있으면 제거하자. tempString = Convert.ToString(tRange.Value2); tempString = tempString.Replace(",", ""); pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString); } } tRange = ws.Cells[nCurrentRow, ExData_BuyDate]; pExcelData.BuyDate_ = Convert.ToString(tRange.Value2); pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('.', '-'); if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만 { tRange = ws.Cells[nCurrentRow, ExData_BuyCount]; pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2); } tRange = ws.Cells[nCurrentRow, ExData_OpCount_1]; ArrBuyCnt[0] = Convert.ToInt32(tRange.Value2); tRange = ws.Cells[nCurrentRow, ExData_OpCount_2]; ArrBuyCnt[1] = Convert.ToInt32(tRange.Value2); tRange = ws.Cells[nCurrentRow, ExData_OpCount_3]; ArrBuyCnt[2] = Convert.ToInt32(tRange.Value2); SplitDealAndInsertExcelData(pExcelData, ArrBuyCnt); //SplitDealAndInsertExcelData(pExcelData, comparesitename); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message)); break; //nCurrentRow++; //continue; } ProcessStateManager.Instance.CurParsingCount_++; nCurrentRow++; } wb.Close(false, Type.Missing, Type.Missing); ap.Quit(); Marshal.FinalReleaseComObject(ws); Marshal.FinalReleaseComObject(wb); Marshal.FinalReleaseComObject(ap); ws = null; wb = null; ap = null; GC.Collect(); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("Error protected override bool Internal_Excel_Parsing - {0}", ex.Message)); return false; } return true; }
// DB 에서 상품 코드 읽어오기 public static bool GetGoodsTableWithUID(SqlHelper dbHelper, Int32 nChannelIdx, Int32 nAuthorityIdx, Int32 nUID, ref Dictionary<Int32, ChannelGoodInfo> pInfoList) { pInfoList.Clear(); bool bResult = true; try { Dictionary<string, object> argdic = new Dictionary<string, object>(); argdic.Add("xChannelSeq", nChannelIdx.ToString()); argdic.Add("xAuthoritySeq", nAuthorityIdx.ToString()); argdic.Add("xCrawlerSeq", nUID.ToString()); MySqlDataReader datareader = dbHelper.call_proc("spNewSelectGoodsInfo", argdic); string availableData = ""; while (datareader.Read()) { ChannelGoodInfo pGoodInfo = new ChannelGoodInfo(); pGoodInfo.Idx_ = Convert.ToInt32(datareader["seq"]); pGoodInfo.Goods_Code_ = Convert.ToString(datareader["ChGoodsCode"]); pGoodInfo.GoodsName_ = Convert.ToString(datareader["GoodsName"]); pGoodInfo.GoodsNickName_ = Convert.ToString(datareader["GoodsNick"]); pGoodInfo.GoodsPassType_ = Convert.ToString(datareader["GoodsPassType"]); pGoodInfo.GoodsSendType_ = Convert.ToInt32(datareader["GoodsSendType"]); pGoodInfo.sDate_ = Convert.ToString(datareader["GoodsSdate"]); pGoodInfo.eDateFormat_ = Convert.ToString(datareader["GoodsEdateFormat"]); availableData = Convert.ToString(datareader["AvailableDate"]); pGoodInfo.OptionName_ = Convert.ToString(datareader["GoodsOptionName"]); pGoodInfo.OptionNickName_ = Convert.ToString(datareader["GoodsNickName"]); pGoodInfo.GoodsAttrType_ = Convert.ToInt32(datareader["GoodsAttrType"]); if (string.IsNullOrEmpty(pGoodInfo.Goods_Code_) == true) { string LogMessage = string.Format("bool GetGoodsTable 상품코드가 지정되어 있지 않아서 상품은 건너 뜁니다.{0}/{1}" , pGoodInfo.Goods_Code_, pGoodInfo.GoodsName_); NewLogManager2.Instance.Log(LogMessage); continue; } if (string.IsNullOrEmpty(pGoodInfo.OptionNickName_) == true) { string LogMessage = string.Format("bool GetGoodsTable 상품 옵션명이 지정되지 않아서 이 상품은 건너 뜁니다.{0}/{1}" , pGoodInfo.Goods_Code_, pGoodInfo.OptionNickName_); NewLogManager2.Instance.Log(LogMessage); continue; } if (string.IsNullOrEmpty(availableData) == false) { if (Regex.IsMatch(availableData, @"^(19|20)\d{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$") == true) { pGoodInfo.availableDateTime_ = Convert.ToDateTime(availableData); pGoodInfo.Expired_ = true; } } pInfoList.Add(pGoodInfo.Idx_, pGoodInfo); } datareader.Close(); datareader.Dispose(); datareader = null; } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("Error bool GetGoodsTableWithUID - {0}", ex.Message)); bResult = false; } return bResult; }
protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo) { try { if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false) { NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_)); return false; } string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_]; Microsoft.Office.Interop.Excel.Application ap = null; Workbook wb = null; Worksheet ws = null; HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws); Range tRange = null; string tempString = ""; string comparesitename = ""; Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_; Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_; Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_; Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_; Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_; Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_; Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_; Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_; Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_; Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_; Int32 ExData_GoodsName = LQCrawlerInfo_.ExData_GoodName_; Int32 ExData_Coupncode2 = 4; // 11번가만 가지고 있는 주문 순번 쿠폰 코드가 고유하지 않아서 이것과 합쳐야만 고유해진다. ProcessStateManager.Instance.NeedParsingCount_ += ws.UsedRange.Rows.Count; while (true) { try { tRange = ws.Cells[nCurrentRow, 1]; comparesitename = Convert.ToString(tRange.Value2); tRange = ws.Cells[nCurrentRow, ExData_Option]; if (tRange == null) break; tempString = tRange.Value2; if (tempString == null) { break; } COrderData pExcelData = new COrderData(); pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_; pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_; pExcelData.ExData_Option_ = tempString; pExcelData.ExData_OptionOriginal_ = tempString; tRange = ws.Cells[nCurrentRow, ExData_GoodsName]; pExcelData.ExData_GoodsName_ = tRange.Value2; pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", ""); tRange = ws.Cells[nCurrentRow, ExData_Coupncode]; if (tRange == null) break; pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2); if (pExcelData.channelOrderCode_ == null) break; pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", ""); pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim(); // 공백 제거 tRange = ws.Cells[nCurrentRow, ExData_Coupncode2]; if (tRange == null) break; pExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, Convert.ToString(tRange.Value2)); tRange = ws.Cells[nCurrentRow, ExData_Buyer]; pExcelData.orderName_ = Convert.ToString(tRange.Value2); if (pExcelData.orderName_ == null) pExcelData.orderName_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Cancel]; pExcelData.ExData_Cancel_ = tRange.Value2; if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Use]; pExcelData.ExData_Use_ = tRange.Value2; if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Buyphone]; pExcelData.orderPhone_ = Convert.ToString(tRange.Value2); if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = ""; pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", ""); if (ExData_Price != 0) { tRange = ws.Cells[nCurrentRow, ExData_Price]; if (tRange.Value2 != null) {// 돈에 , 가 있으면 제거하자. tempString = Convert.ToString(tRange.Value2); tempString = tempString.Replace(",", ""); pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString); } } tRange = ws.Cells[nCurrentRow, ExData_BuyDate]; if (LQCrawlerInfo_.Channel_Idx_ == 9 || LQCrawlerInfo_.Channel_Idx_ == 14 || LQCrawlerInfo_.Channel_Idx_ == 15 || LQCrawlerInfo_.Channel_Idx_ == 18) { double temp = Convert.ToDouble(tRange.Value2); DateTime dta = DateTime.FromOADate(temp); pExcelData.BuyDate_ = dta.ToString("u"); pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", ""); } else { pExcelData.BuyDate_ = Convert.ToString(tRange.Value2); } pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('/', '-'); if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만 { tRange = ws.Cells[nCurrentRow, ExData_BuyCount]; pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2); } SplitDealAndInsertExcelData(pExcelData, comparesitename); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message)); break; //nCurrentRow++; //continue; } ProcessStateManager.Instance.CurParsingCount_++; nCurrentRow++; } wb.Close(false, Type.Missing, Type.Missing); ap.Quit(); Marshal.FinalReleaseComObject(ws); Marshal.FinalReleaseComObject(wb); Marshal.FinalReleaseComObject(ap); ws = null; wb = null; ap = null; GC.Collect(); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("Error override bool Internal_Excel_Parsing - {0}", ex.Message)); return false; } return true; }
protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo) { try { if (actionType != "insert") { return true; } if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false) { NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_)); return false; } DateTime dtNow = BaseChannel.dtnow; DateTime beforeData = dtNow.AddDays(-2); string sData = string.Format("{0}-{1}-{2} {3}:{4}:{5}", beforeData.Year, beforeData.Month, beforeData.Day, "00","00","00"); string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_]; Microsoft.Office.Interop.Excel.Application ap = null; Workbook wb = null; Worksheet ws = null; HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws); Range tRange = null; string tempString = ""; string comparesitename = ""; Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_; Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_; Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_; Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_; Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_; Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_; Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_; Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_; Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_; Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_; if (nCurrentRow > 0) ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1)); while (true) { try { tRange = ws.Cells[nCurrentRow, 1]; comparesitename = Convert.ToString(tRange.Value2); tRange = ws.Cells[nCurrentRow, ExData_Option]; if (tRange == null) break; tempString = tRange.Value2; if (tempString == null) { break; } COrderData pExcelData = new COrderData(); pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_; pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_; pExcelData.ExData_Option_ = tempString; pExcelData.ExData_OptionOriginal_ = tempString; pExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsNick_ = pChannelGoodInfo.GoodsName_; pExcelData.goodsCode_ = pChannelGoodInfo.Goods_Code_; tRange = ws.Cells[nCurrentRow, ExData_BuyDate]; pExcelData.BuyDate_ = Convert.ToString(tRange.Value2); pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('.', '-'); pExcelData.BuyDate_ = Regex.Replace(pExcelData.BuyDate_, @"^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$", @"$1-$2-$3 $4:$5:$6"); DateTime excelDate = DateTime.Parse(pExcelData.BuyDate_); int checkTime = DateTime.Compare(beforeData, excelDate); //비교날짜보다 더 크면 리스트에 추가하지 말고 넘어간다 if(checkTime > 0) { ProcessStateManager.Instance.PassParsingCount_++; nCurrentRow++; continue; } tRange = ws.Cells[nCurrentRow, ExData_Coupncode]; if (tRange == null) break; pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2); if (pExcelData.channelOrderCode_ == null) break; pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", ""); pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim(); // 공백 제거 tRange = ws.Cells[nCurrentRow, ExData_Buyer]; pExcelData.orderName_ = Convert.ToString(tRange.Value2); if (pExcelData.orderName_ == null) pExcelData.orderName_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Cancel]; pExcelData.ExData_Cancel_ = tRange.Value2; if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Use]; pExcelData.ExData_Use_ = tRange.Value2; if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Buyphone]; pExcelData.orderPhone_ = Convert.ToString(tRange.Value2); if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = ""; pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", ""); if (ExData_Price != 0) { tRange = ws.Cells[nCurrentRow, ExData_Price]; if (tRange.Value2 != null && tRange.Value2 != "") {// 돈에 , 가 있으면 제거하자. tempString = Convert.ToString(tRange.Value2); tempString = tempString.Replace(",", ""); pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString); } } if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만 { tRange = ws.Cells[nCurrentRow, ExData_BuyCount]; pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2); } SplitDealAndInsertExcelData(pExcelData, comparesitename); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message)); break; //nCurrentRow++; //continue; } ProcessStateManager.Instance.CurParsingCount_++; nCurrentRow++; } wb.Close(false, filepath, Type.Missing); ap.Quit(); Marshal.FinalReleaseComObject(tRange); Marshal.FinalReleaseComObject(ws); Marshal.FinalReleaseComObject(wb); Marshal.FinalReleaseComObject(ap); tRange = null; ws = null; wb = null; ap = null; GC.Collect(); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("Error protected override bool Internal_Excel_Parsing - {0}", ex.Message)); return false; } return true; }
protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo) { try { if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false) { NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_)); return false; } string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_]; Microsoft.Office.Interop.Excel.Application ap = null; Workbook wb = null; Worksheet ws = null; HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws); Range tRange = null; string tempString = ""; Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_; Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_; Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_; Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_; Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_; Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_; Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_; Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_; Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_; Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_; Int32 ExData_GoodsName = LQCrawlerInfo_.ExData_GoodName_; if (nCurrentRow > 0) ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1)); string beforeOrderName = ""; // 이전 주문자명 string beforeOrderPhone = ""; // 이전 주문 전화번호 string beforeOrderDate = ""; // 이전 주문 날짜 while (true) { try { tRange = ws.Cells[nCurrentRow, ExData_Option]; if (tRange == null) break; tempString = tRange.Value2; if (tempString == null) { break; } COrderData pExcelData = new COrderData(); pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_; // 채널 시퀀스 pExcelData.goodsSeq_ = -1; // 상품 시퀀스 pExcelData.ExData_Option_ = tempString; // 옵션명 pExcelData.ExData_OptionOriginal_ = tempString; // 원래 옵션명 tRange = ws.Cells[nCurrentRow, ExData_GoodsName]; pExcelData.ExData_GoodsName_ = tRange.Value2; pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", ""); tRange = ws.Cells[nCurrentRow, ExData_Coupncode]; if (tRange == null) break; pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2); if (pExcelData.channelOrderCode_ == null) break; pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", ""); pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim(); tRange = ws.Cells[nCurrentRow, ExData_Buyer]; pExcelData.orderName_ = Convert.ToString(tRange.Value2); if (pExcelData.orderName_ == null) { pExcelData.orderName_ = beforeOrderName; } else { beforeOrderName = pExcelData.orderName_; } tRange = ws.Cells[nCurrentRow, ExData_Cancel]; pExcelData.ExData_Cancel_ = tRange.Value2; if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Use]; pExcelData.ExData_Use_ = tRange.Value2; if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = ""; tRange = ws.Cells[nCurrentRow, ExData_Buyphone]; pExcelData.orderPhone_ = Convert.ToString(tRange.Value2); if (pExcelData.orderPhone_ == null) { pExcelData.orderPhone_ = beforeOrderPhone; } else { beforeOrderPhone = pExcelData.orderPhone_; } pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", ""); if (ExData_Price != 0) { tRange = ws.Cells[nCurrentRow, ExData_Price]; if (tRange.Value2 != null) { tempString = Convert.ToString(tRange.Value2); tempString = tempString.Replace(",", ""); pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString); } } tRange = ws.Cells[nCurrentRow, ExData_BuyDate]; if (tRange.Value2 == null) { pExcelData.BuyDate_ = beforeOrderDate; } else { double temp = Convert.ToDouble(tRange.Value2); DateTime dta = DateTime.FromOADate(temp); pExcelData.BuyDate_ = dta.ToString("u"); pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", ""); beforeOrderDate = pExcelData.BuyDate_; } if (ExData_BuyCount != 0) { tRange = ws.Cells[nCurrentRow, ExData_BuyCount]; pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2); } SplitDealAndInsertExcelData(pExcelData); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message)); break; //nCurrentRow++; //continue; } ProcessStateManager.Instance.CurParsingCount_++; nCurrentRow++; } wb.Close(false, Type.Missing, Type.Missing); ap.Quit(); Marshal.FinalReleaseComObject(ws); Marshal.FinalReleaseComObject(wb); Marshal.FinalReleaseComObject(ap); ws = null; wb = null; ap = null; GC.Collect(); } catch (System.Exception ex) { NewLogManager2.Instance.Log(string.Format("Error public override bool Internal_Excel_Parsing - {0}", ex.Message)); return false; } return true; }
// 엑셀 파싱 //protected abstract bool Internal_Excel_Parsing(string filepath, Int32 GoodsAttrType, bool bFixedType, string goodsname); protected abstract bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo);