using System.Data; using System.Collections; using System.Text; using Estsh.Core.Models; using Estsh.Core.Repository.IRepositories; using Estsh.Core.Services.IServices; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Text.RegularExpressions; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:采购周计划导入 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Services { /// /// 采购周计划业务处理类 /// public class PurchaseNoteService : BaseService, IPurchaseNoteService { #region 类局部变量 private System.Data.DataTable dtWeekSchedule = null; private System.Data.DataTable dtDaySchedule = null; private System.Data.DataTable dtWeekDate = null; private bool isReadWeekDate = false; private string[] strArrayWeekValue = null; private const int ISTARTSHEETINDEX = 6; //起始SHEET值(不读取) private const int IENDSHEETCOUNT = 3; //尾通用SHEET数量(不读取) private const int ISTARTROWINDEX = 18; //数据起始行值 private const int ISTARTDATEINDEX = 7; //日期起始列值 private const int IENDDATEINDEX = 13; //日期结束列值 private const int IROWINTERVAL = 8; //上、下模板差值 private const int ICOLINTERVAL = 6; //左、右模板差值 private const int IFIRSTLETTER = 65; //起始字母值(‘A’ ASSIC value) #endregion private readonly IPurchaseNoteRepository repository; public PurchaseNoteService(IPurchaseNoteRepository _repository) : base(_repository) { repository = _repository; strArrayWeekValue = new string[7]; strArrayWeekValue[0] = "日"; strArrayWeekValue[1] = "一"; strArrayWeekValue[2] = "二"; strArrayWeekValue[3] = "三"; strArrayWeekValue[4] = "四"; strArrayWeekValue[5] = "五"; strArrayWeekValue[6] = "六"; isReadWeekDate = false; } /// /// 读取采购订单文件并更新至数据库 /// /// 文件全路径 /// 登录用户信息 public Hashtable ReadExcelFile(Stream inputStream, int userID) { HSSFWorkbook hsWorkbook = new HSSFWorkbook(inputStream); Hashtable result = new Hashtable(); int iSheetCount = hsWorkbook.Workbook.NumSheets; if (iSheetCount < 9) { result.Add("log","所选取周计划数据[Sheet]数量不足,请确认采购单格式!"); result.Add("message", "所选取周计划数据[Sheet]数量不足,请确认采购单格式!\r\n"); result.Add("flag","error"); return result; } if (!isReadWeekDate) { string strReadWeekDate = this.ReadWeekDate(hsWorkbook); if (strReadWeekDate != "") { result.Add("log", strReadWeekDate); result.Add("message", strReadWeekDate); result.Add("flag", "error"); return result; } isReadWeekDate = true; //this.ListBoxItemAdd(lstInfo, "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") // + "]:周数及对应日期读取成功!正在读取周计划表头数据,请稍候..."); //this.MessageShow(plInfo, lblInfo, "周数及对应日期读取成功!\r\n正在读取周计划表头数据,请稍候...", 1); //System.Windows.Forms.Application.DoEvents(); } string strReadWeekResult = this.ReadWeekSchedule(hsWorkbook, iSheetCount,userID); if (strReadWeekResult != "") { result.Add("log", strReadWeekResult); result.Add("message", strReadWeekResult); result.Add("flag", "error"); return result; } string strReadDayResult = this.ReadDaySchedule(hsWorkbook, iSheetCount); if (strReadDayResult != "") { result.Add("log", strReadDayResult); result.Add("message", strReadDayResult); result.Add("flag", "error"); return result; } string strResult = this.repository.DataSaveTransact(dtWeekSchedule, dtDaySchedule, userID).Trim(); if (string.IsNullOrEmpty(strResult)) { result.Add("log", "周计划数据文件更新成功!日程单已转结,请确认...\r\n周计划订单数据文件更新成功!"); result.Add("message", "周计划数据文件更新成功,日程单已转结,请确认!"); result.Add("flag", "success"); return result; } else { result.Add("log", "周计划数据文件更新失败!请重试...\r\n周计划订单数据文件更新失败!"); result.Add("message", "周计划数据文件更新失败,请重试!"); result.Add("flag", "error"); return result; //#if DEBUG //this.MessageShow(plInfo, lblInfo, strResult, 0); //#endif } } /// /// 读取EXCEL周计划文件详细要货数据 /// /// EXCEL工作簿对象 /// EXCEL工作表数量 /// public string ReadDaySchedule(HSSFWorkbook hsWorkbook, int iSheetCount) { dtDaySchedule = new System.Data.DataTable(); dtDaySchedule.TableName = "DaySchedule"; DataColumn dcSeNo = new DataColumn("se_no", typeof(string)); //周计划单据号 DataColumn dcChNo = new DataColumn("ch_no", typeof(string)); //采购单 DataColumn dcSeDate = new DataColumn("se_date", typeof(string)); //送货日期 DataColumn dcSeTime = new DataColumn("se_time", typeof(string)); //送货时间 DataColumn dcElNo = new DataColumn("el_no", typeof(string)); //零件号 DataColumn dcBoxQty = new DataColumn("carton_qty", typeof(string)); //送货数量(箱数量) DataColumn dcSnpQty = new DataColumn("snp_qty", typeof(string)); //标准包装规格 DataColumn dcQty = new DataColumn("qty", typeof(string)); //总数量 DataColumn dcProject = new DataColumn("se_project", typeof(string)); //项目 DataColumn dcChNoSheet = new DataColumn("ch_no_sheet", typeof(string)); //周计划单行采购订单 DataColumn dcSuNo = new DataColumn("su_no", typeof(string)); //供应商代码 DataColumn dcDayOrder = new DataColumn("day_order", typeof(string)); //日程单单据号 DataColumn dcVendorId = new DataColumn("vendor_id", typeof(string)); //供应商信息所属行ID DataColumn dcPartId = new DataColumn("part_id", typeof(string)); //零件号信息所属行ID DataColumn dcTypeId = new DataColumn("type_id", typeof(string)); //项目(车型)信息所属行ID dtDaySchedule.Columns.AddRange(new DataColumn[] { dcSeNo, dcChNo, dcSeDate, dcSeTime, dcElNo , dcBoxQty, dcSnpQty, dcQty, dcProject, dcChNoSheet, dcSuNo, dcDayOrder, dcVendorId, dcPartId, dcTypeId }); for (int i = ISTARTSHEETINDEX; i < iSheetCount - IENDSHEETCOUNT; i++) { //string strTemppp = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX][19].ToString().Trim().ToUpper(); if (dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["is_print"].ToString().Trim().ToUpper() != "Y") { continue; } string strSuNo = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["su_no"].ToString().Trim().ToUpper(); string strSeNo = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["se_no"].ToString().Trim().ToUpper(); string strVendorId = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["vendor_id"].ToString().Trim().ToUpper(); HSSFSheet hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(i); //string strSupplierCode = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX][1].ToString(); string strChNo = dtWeekSchedule.Rows[0][1].ToString(); for (int j = ISTARTROWINDEX; j < 65535; j++) { HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(0); string strElNo = this.GetCellValue(hsCell).Trim(); if (strElNo == "备注") { break; } hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(6); if (this.GetCellValue(hsCell).Trim() == "") { break; } //标准包装获取 hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(5); string strSnp = this.GetCellValue(hsCell); hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(2); string strProject = this.GetCellValue(hsCell).ToUpper().Replace(" ", ""); hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(3); strChNo = this.GetCellValue(hsCell).ToUpper().Trim(); if (strElNo == "") { //同零件多送货时间,寻找第一送货时间点的零件号及标准包装 for (int n = j; n >= ISTARTROWINDEX; n--) { hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(0); string strTempCellValue = this.GetCellValue(hsCell).Trim(); if (strTempCellValue == "") { continue; } strElNo = strTempCellValue; hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(5); strSnp = this.GetCellValue(hsCell); hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(2); strProject = this.GetCellValue(hsCell); hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(3); strChNo = this.GetCellValue(hsCell); break; } } if (strElNo == "") { return "第[" + Convert.ToString(j + 1) + "]行,零件号读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } string partId = this.repository.QueryPartId(strElNo); if (string.IsNullOrEmpty(partId)) { return "第[" + Convert.ToString(j + 1) + "]行,零件号信息查询错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } if (!this.IsNumeric(strSnp)) { return "第[" + Convert.ToString(j + 1) + "]行,零件标准包装读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } int iSnp = Convert.ToInt32(strSnp); if (iSnp < 1) { return "第[" + Convert.ToString(j + 1) + "]行,零件标准包装配置有误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } int snpTemp = this.repository.QueryPartSnp(partId); if (snpTemp < 1) { return "第[" + Convert.ToString(j + 1) + "]行,无此零件配置信息或标准包装配置有误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } if (strSnp != snpTemp.ToString()) { return "第[" + Convert.ToString(j + 1) + "]行,此零件标准包装[" + strSnp + "]与系统配置数据[" + snpTemp.ToString() + "]不符!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } string itemId = this.repository.QueryItemId(strProject); if (string.IsNullOrEmpty(itemId)) { return "第[" + Convert.ToString(j + 1) + "]行,此零件所属项目[" + strProject + "]信息未配置或与系统不符!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } if (!this.repository.ValidatePurNo(strChNo, strElNo)) { return "第[" + Convert.ToString(j + 1) + "]行,此零件所属采购单号[" + strChNo + "]信息验证失败,请确认QAD采购单数据已同步!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(6); string strTime = this.GetTimeCellValue(hsCell); if (strTime == "") { return "第[" + Convert.ToString(j + 1) + "]行,送货时间读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } string strDateNow = this.repository.GetApDateTime(0); if (strDateNow == "") { return "服务器日期获取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } for (int k = ISTARTDATEINDEX; k <= IENDDATEINDEX; k++) { //判断文件内日期是否早于服务器日期 string strSeDate = dtWeekDate.Rows[k - ISTARTDATEINDEX][1].ToString(); if (strSeDate.CompareTo(strDateNow) < 0) { continue; } hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(k); string strSendQty = this.GetCellValue(hsCell); if (strSendQty == "0" || strSendQty == "") { continue; } if (!this.IsNumeric(strSendQty)) { return "第[" + Convert.ToString(j + 1) + "]行,第[" + Convert.ToString(k + 1) + "]列,数据格式错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; ; } int iSendQty = Convert.ToInt32(strSendQty); //int iBoxQty = iSendQty / iSnp; int iBoxQty = (int)Math.Ceiling(Convert.ToDouble(iSendQty) / iSnp); DataRow dr = dtDaySchedule.NewRow(); dr["se_no"] = strSeNo; dr["ch_no_sheet"] = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["ch_no"].ToString(); dr["ch_no"] = strChNo; dr["se_date"] = strSeDate; dr["se_time"] = strTime; dr["el_no"] = strElNo; dr["carton_qty"] = iBoxQty.ToString(); dr["snp_qty"] = strSnp; dr["qty"] = strSendQty; dr["se_project"] = strProject; dr["su_no"] = strSuNo; dr["day_order"] = "DR" + strSeDate.Replace("/", ""); dr["vendor_id"] = strVendorId; dr["part_id"] = partId; dr["type_id"] = itemId; dtDaySchedule.Rows.Add(dr); } } } if (dtDaySchedule == null || dtDaySchedule.Rows.Count < 1) { return "所选择采购周计划订单文件未读取到任何数据,请确认文件格式!"; } DataView dvDaySchedule = new DataView(); dvDaySchedule = dtDaySchedule.Copy().DefaultView; dvDaySchedule.Sort = "el_no,se_date,se_time"; dtDaySchedule.Clear(); dtDaySchedule = dvDaySchedule.ToTable(); return ""; } /// /// 获取周计划段内详细日期数据 /// /// 工作簿对象 /// public string ReadWeekDate(HSSFWorkbook hsWorkbook) { dtWeekDate = new System.Data.DataTable(); dtWeekDate.TableName = "WeekDate"; DataColumn dcWeekNo = new DataColumn("week_no", typeof(string)); //周数 DataColumn dcDayValue = new DataColumn("day_value", typeof(string)); //日期 DataColumn dcWeekValue = new DataColumn("week_value", typeof(string)); //星期值 dtWeekDate.Columns.AddRange(new DataColumn[] { dcWeekNo, dcDayValue, dcWeekValue }); HSSFSheet hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(ISTARTDATEINDEX - 1); for (int i = ISTARTDATEINDEX; i <= IENDDATEINDEX; i++) { DataRow dr = dtWeekDate.NewRow(); HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(15).GetCell(i); string strWeekNo = this.GetCellValue(hsCell); int iWeekNo = 0; try { iWeekNo = Convert.ToInt32(strWeekNo); } catch { return "订单数据所属周数读取错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } if (iWeekNo < 10) { dr["week_no"] = "0" + strWeekNo; } else { dr["week_no"] = strWeekNo; } hsCell = (HSSFCell)hsSheet.GetRow(16).GetCell(i); DateTime dtTemp = DateTime.FromOADate(Convert.ToInt32(this.GetCellValue(hsCell))); //dr[1] = dtTemp.ToShortDateString().Replace("-", "/"); dr["day_value"] = dtTemp.ToString("yyyy/MM/dd").Replace('-', '/'); dr["week_value"] = strArrayWeekValue[(int)dtTemp.DayOfWeek]; if (dr["week_no"].ToString() == "" || dr["day_value"].ToString() == "" || dr["week_value"].ToString() == "") { return "订单周数及日期查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; } dtWeekDate.Rows.Add(dr); } return ""; } /// /// 获取EXCEL周计划文件内各供应商表头信息 /// /// 工作簿对象 /// 工作表数量 /// public string ReadWeekSchedule(HSSFWorkbook hsWorkbook, int iSheetCount,int userID) { dtWeekSchedule = new System.Data.DataTable(); dtWeekSchedule.TableName = "WeekSchedule"; DataColumn dcSeNo = new DataColumn("se_no", typeof(string)); //周计划单 DataColumn dcSuNo = new DataColumn("su_no", typeof(string)); //供应商代码 DataColumn dcChNo = new DataColumn("ch_no", typeof(string)); //采购单 DataColumn dcSuContact = new DataColumn("su_contact", typeof(string)); //供应商联系人 DataColumn dcSuTel = new DataColumn("su_tel", typeof(string)); DataColumn dcSuFax = new DataColumn("su_fax", typeof(string)); DataColumn dcSuMtel = new DataColumn("su_mtel", typeof(string)); DataColumn dcSuAddr = new DataColumn("su_addr", typeof(string)); DataColumn dcSuMile = new DataColumn("su_mile", typeof(string)); DataColumn dcSeDate = new DataColumn("se_date", typeof(string)); DataColumn dcSeAddr = new DataColumn("se_addr", typeof(string)); DataColumn dcSeContact = new DataColumn("se_contact", typeof(string)); DataColumn dcSeTel = new DataColumn("se_tel", typeof(string)); DataColumn dcSeMtel = new DataColumn("se_mtel", typeof(string)); DataColumn dcSeFax = new DataColumn("se_fax", typeof(string)); DataColumn dcSeMile = new DataColumn("se_mile", typeof(string)); DataColumn dcWaNo = new DataColumn("wa_no", typeof(string)); DataColumn dcSeWeek = new DataColumn("se_week", typeof(string)); DataColumn dcRtdSure = new DataColumn("rtd_sure", typeof(string)); DataColumn dcIsPrint = new DataColumn("is_print", typeof(string)); DataColumn dcSuPwd = new DataColumn("su_pwd", typeof(string)); DataColumn dcIssId = new DataColumn("iss_id", typeof(string)); DataColumn dcVendorId = new DataColumn("vendor_id", typeof(string)); dtWeekSchedule.Columns.AddRange(new DataColumn[] { dcSeNo, dcSuNo, dcChNo, dcSuContact, dcSuTel, dcSuFax, dcSuMtel, dcSuAddr, dcSuMile, dcSeDate, dcSeAddr, dcSeContact, dcSeTel, dcSeMtel, dcSeFax, dcSeMile, dcWaNo, dcSeWeek, dcRtdSure, dcIsPrint ,dcSuPwd ,dcVendorId ,dcIssId }); HSSFSheet hsSheet = new HSSFSheet(hsWorkbook); for (int i = ISTARTSHEETINDEX; i < iSheetCount - IENDSHEETCOUNT; i++) { hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(i); string[] strArrayTemp = null; strArrayTemp = this.GetSupplierInfo(hsSheet,userID); if (strArrayTemp[0] != "") { return strArrayTemp[0]; } string strSeWeek = dtWeekDate.Rows[0]["week_no"].ToString(); DataRow dr = dtWeekSchedule.NewRow(); dr["se_no"] = "WR" + this.repository.GetServerDateTime("YYYY") + strSeWeek; for (int j = 1; j <= 16; j++) { dr[j] = strArrayTemp[j]; } dr["se_week"] = strSeWeek; dr["rtd_sure"] = "N"; dr["is_print"] = strArrayTemp[19]; dr["su_pwd"] = strArrayTemp[20]; dr["vendor_id"] = strArrayTemp[21]; dr["iss_id"] = strArrayTemp[22]; dtWeekSchedule.Rows.Add(dr); } return ""; } public string[] GetSupplierInfo(HSSFSheet hsSheet,int userID) { string[] strArrayInfo = new string[23]; strArrayInfo[0] = ""; string factoryId = this.repository.GetFactoryId(userID); if (string.IsNullOrEmpty(factoryId)) { strArrayInfo[0] = "登录用户所属厂区信息查询错误!"; return strArrayInfo; } HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(5).GetCell(0); string strSupplierCode = this.SeparateByColon(GetCellValue(hsCell)); if (strSupplierCode == "") { strArrayInfo[0] = "供应商代码查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } strArrayInfo[1] = strSupplierCode.Trim().ToUpper(); //su_no:供应商代码 hsCell = (HSSFCell)hsSheet.GetRow(7).GetCell(0); string strBuyerNo = this.SeparateByColon(GetCellValue(hsCell)).ToUpper(); if (strBuyerNo == "") { strArrayInfo[0] = "采购单号查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } strArrayInfo[2] = strBuyerNo; //ch_no:采购单 List dtTemp = this.repository.QuerySupplierInfo(strSupplierCode); if (dtTemp != null && dtTemp.Count > 0) { strArrayInfo[3] = dtTemp[0].VendorSale.ToString(); //su_contact:供应商联系人 strArrayInfo[4] = dtTemp[0].VendorTel.ToString(); //su_tel:供应商电话 strArrayInfo[5] = dtTemp[0].VendorFax.ToString(); //su_fax:供应商传真 strArrayInfo[6] = dtTemp[0].VendorMtel.ToString(); //su_mtel:供应商移动电话 strArrayInfo[7] = dtTemp[0].VendorAddr.ToString(); //su_addr:供应商联系地址 strArrayInfo[8] = dtTemp[0].VendorMail.ToString(); //su_mile:供应商联系Mail strArrayInfo[19] = dtTemp[0].IsPrint.ToString().Trim().ToUpper(); //供应商是否要打印打码 strArrayInfo[20] = dtTemp[0].VendorPwd.ToString().Trim().ToUpper();//供应商压缩密码 strArrayInfo[21] = dtTemp[0].VendorId.ToString().Trim(); //供应商信息所属行ID } else { strArrayInfo[0] = "供应商[" + strSupplierCode + "]信息查询错误,请确认供应商基本信息已维护!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } hsCell = (HSSFCell)hsSheet.GetRow(5).GetCell(10); string strSeDate = this.GetCellValue(hsCell); if (strSeDate == "") { strArrayInfo[0] = "下单日期查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } strArrayInfo[9] = DateTime.FromOADate(Convert.ToInt32(strSeDate)).ToString("yyyy/MM/dd").Replace("-", "/"); //se_date:送货日期 hsCell = (HSSFCell)hsSheet.GetRow(7).GetCell(6); string strOrderName = this.SeparateByColon(GetCellValue(hsCell)); if (strOrderName == "") { strArrayInfo[0] = "下单员信息查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } List dtiss = this.repository.QueryOrderInfo(strOrderName); if (dtiss != null && dtiss.Count > 0) { strArrayInfo[10] = dtiss[0].IssAddr.ToString(); //se_addr:订单员联系地址 strArrayInfo[11] = dtiss[0].IssName.ToString(); //se_contact:订单员姓名 strArrayInfo[12] = dtiss[0].IssTel.ToString(); //se_tel:订单员电话 strArrayInfo[13] = dtiss[0].IssMtel.ToString(); //se_mtel:订单员移动电话 strArrayInfo[14] = dtiss[0].IssFax.ToString(); //se_fax:订单员传真 strArrayInfo[15] = dtiss[0].IssMail.ToString(); //se_mile:订单员联系Mail strArrayInfo[22] = dtiss[0].IssId.ToString(); //订单员信息所属行ID } else { strArrayInfo[0] = "订单员[" + strOrderName + "]信息查询错误,请确认订单员基本信息已维护!\r\nSheet Name:[" + hsSheet.SheetName + "]"; return strArrayInfo; } strArrayInfo[16] = factoryId; //wa_no:厂别 return strArrayInfo; } /// /// NPOI获取EXCEL工作表中单元格内容 /// /// EXCEL单元格对象 /// public string GetCellValue(HSSFCell hsCell) { if (hsCell == null) { return ""; } switch (hsCell.CellType) { case CellType.Numeric: return hsCell.NumericCellValue.ToString(); case CellType.Formula: return hsCell.NumericCellValue.ToString(); case CellType.String: return hsCell.StringCellValue; case CellType.Boolean: return hsCell.BooleanCellValue.ToString(); default: return ""; } } /// /// NPOI获取EXCEL工作表中时间类型单元格内容 /// /// EXCEL单元格对象 /// public string GetTimeCellValue(HSSFCell hsCell) { if (hsCell == null) { return ""; } if (hsCell.CellType != CellType.Numeric) { return ""; } string strResult = hsCell.DateCellValue.ToString(); try { DateTime dt = Convert.ToDateTime(strResult); strResult = dt.ToString("HH:mm"); } catch { return ""; } if (strResult.Length > 1) { string strLastChar = strResult.Substring(strResult.Length - 1, 1); if (strLastChar == ":" || strLastChar == ":") { strResult = strResult.Substring(0, strResult.Length - 1); } } return strResult; } /// /// separate the string by colon /// /// source string /// return part content as string public string SeparateByColon(string src) { string split = ":"; string[] strArray = null; src = src.Replace(":", split); if (src.IndexOf(split) < 0) { return ""; } strArray = src.Split(split.ToCharArray()); if (strArray.Length > 2) { string strTemp = ""; for (int i = 1; i < strArray.Length; i++) { if (strTemp == "") { strTemp += strArray[i]; } else { strTemp += split + strArray[i]; } } return strTemp; } else { return strArray[1]; } } /// /// separate the string by split string & flag /// /// source string /// split string /// part flag /// return part content as string public string Separater(string src, string split, int flag) { string[] strArray = null; if (src.IndexOf(split) < 0) { if (flag == 0) { return src; } else { return ""; } } strArray = src.Split(split.ToCharArray()); if (flag == 0) { return strArray[0].Trim(); } else { if (strArray.Length > 2) { string strTemp = ""; for (int i = 1; i < strArray.Length; i++) { if (strTemp == "") { strTemp += strArray[i]; } else { strTemp += split + strArray[i]; } } return strTemp; } else { return strArray[1]; } } } /// /// verdict the src is number /// /// source string /// return a value as bool public bool IsNumeric(string src) { if (src == "") { return false; } if (src.Substring(0, 1) == "-") { src = src.Substring(1); } Regex regex = new Regex("[0-9]"); for (int i = 0; i < src.Length; i++) { if (!regex.IsMatch(src.Substring(i, 1))) { return false; } } return true; } /// /// 获取日期、时间 /// /// public string GetDateTimeFlag() { int iStartCount = 30; int iEndCount = 255; StringBuilder sbResult = new StringBuilder(); sbResult.Length = 0; for (int i = 0; i < iStartCount; i++) { sbResult.Append("-"); } sbResult.Append("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "]"); for (int i = 0; i < iEndCount; i++) { sbResult.Append("-"); } return sbResult.ToString(); } } }