using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_WORKFLOW; using GThinking.N_MODEL.Dialog; using GThinking.N_PUBLIC; using GThinking.N_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPROAS; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { public partial class XLBJD_WBBJDDRInfo : SingleCardBase { XLBJD_WBBJDDREntity entity = new XLBJD_WBBJDDREntity(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860043; this.UMName = "外部线缆产品导入"; base.CurMaster = Master; base.CurEntity = entity; this.PageHeight = 180; this.PageWidth = 420; Master.EnableAttachBtn = false; Master.EnableCancelBtn = false; Master.EnableCopyBtn = false; Master.EnableDeleteBtn = false; Master.EnableEditBtn = false; Master.EnableInsertBtn = false; Master.EnablePrintBtn = false; Master.EnableRefreshBtn = false; Master.EnableSaveBtn = false; Server.ScriptTimeout = 3600; fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath; if (AppRuntime.BitType == AppBitType.Bit32) fupdPost.Filter = "XLS"; else // AppBitType.Bit64 fupdPost.Filter = "XLS,XLSX"; base.InitPage(); Server.ScriptTimeout = 3600; if (!IsPostBack) { chkSheet.Checked = false; cbxSheetList.Enabled = false; } } #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { if (fupdPost.FileName.Equals("")) { ShowMessage("请选择需要导入的文件!"); return; } else { if (!txtLastPath.Value.Trim().Equals("")) { if ((fupdPost.FilePath != txtLastPath.Value) && !cbxSheetList.SelectedValue.Trim().Equals("")) { ShowMessage("导入文件已发生变化,请重新指定导入页面!"); chkSheet_CheckedChanged(null, null); return; } } } if (txtHHS.Value > txtHHZ.Value) { ShowMessage("栏目行号始不能大于止!"); return; } if (txtHHS.Value <= 0) { ShowMessage("栏目行号始不能小于0!"); return; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); try { dberp.BeginTrans(); Dictionary dicLMMC = new Dictionary(); string sDRSJ = DateTime.Now.ToString(); //当前报价单ID string sBJDID = PageParam.GetRTrimString("BJDID"); string sHTBH = ""; if (!string.IsNullOrEmpty(PageParam.GetRTrimString("HTBH"))) { sHTBH = PageParam.GetRTrimString("HTBH"); } if (cbxSheetList.SelectedValue.Trim().Equals("")) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, false, ""); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, "", ref aDataExcel); ExcelColumnName(Convert.ToInt32(txtHHS.Value), Convert.ToInt32(txtHHZ.Value), aDataExcel, dicLMMC); // string sFileName = fupdPost.FileName; string sSheetName = GetDefaultSheetName(fupdPost.FilePath); XLWBBJDUtils.DeleteInValidEmptyRow(ref aDataExcel); ExecDRSQL(dberp, sSQL, aDataExcel, dicLMMC, sBJDID, sHTBH, sDRSJ, sFileName, sSheetName); } else { string[] sSheetList = cbxSheetList.SelectedValue.Split(','); for (int i = 0; i < sSheetList.Length; i++) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, false, sSheetList[i]); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, sSheetList[i], ref aDataExcel); ExcelColumnName(Convert.ToInt32(txtHHS.Value), Convert.ToInt32(txtHHZ.Value), aDataExcel, dicLMMC); // string sFileName = fupdPost.FileName; string sSheetName = sSheetList[i]; XLWBBJDUtils.DeleteInValidEmptyRow(ref aDataExcel); ExecDRSQL(dberp, sSQL, aDataExcel, dicLMMC, sBJDID, sHTBH, sDRSJ, sFileName, sSheetName); } } dberp.CommitTrans(); ShowMessage("导入成功!"); CloseWindow(); DialogOperationScript dos = new DialogOperationScript(this); dos.ClickOwnerButton(PageParam.GetRTrimString("btnCallBack")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); return; } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } protected void chkSheet_CheckedChanged(object sender, EventArgs e) { if (chkSheet.Checked) { if (fupdPost.FileName.Equals("")) { ShowMessage("请选择需要导入的文件!"); chkSheet.Checked = false; return; } cbxSheetList.Enabled = true; cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; string connStr = GetConnString(fupdPost.FilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); if (sheetNames.Rows[0].Table.Rows.Count == 1) { string sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); cbxSheetList.SelectedValue = sSheetName; } else { for (int i = 0; i < sheetNames.Rows[0].Table.Rows.Count; i++) { string sSheetName = sheetNames.Rows[0].Table.Rows[i]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); } } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } txtLastPath.Value = fupdPost.FilePath; FormAreaUpdate(); } else { cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; cbxSheetList.Enabled = false; FormAreaUpdate(); } } // 根据32/64位运行时返回不同的连接字符串。 private string GetConnString(string sPath) { string conn; if (AppRuntime.BitType == AppBitType.Bit32) { conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; //conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + @";Extended Properties=""Excel 8.0;IMEX=1;ImportMixedTypes=Text"""; } else // AppBitType.Bit64 { conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; } return conn; } #endregion #region 自定义事件 private void ExecDRSQL(TDatabase dberp, TSQL sSQL, DataSet ds, Dictionary dicLMMC, string sBJDID, string sHTBH, string sDRSJ, string sFileName, string sSheetName) { int iTotalRecords = ds.Tables[0].Rows.Count - CMISproConvert.StrToInt(txtHHZ.Value.ToString()); int Rcount = CMISproConvert.StrToInt(GetOption(100860043, "BJU069")); int iZFS = iTotalRecords / Rcount; if (iTotalRecords % Rcount > 0) iZFS++; int iMLFZH = CMISproDataBase.GetMaxXH("DBERP", "XLWBBJDML", "XLWBBJDML_MLFZH", "") + 1; for (int iDRtimes = 1; iDRtimes <= iZFS; iDRtimes++) { string sWBBJDID = XLWBBJDUtils.GetNewWBBJDID(); #region 生成XLWBBJDML表数据--WBBJDID|外部报价单/BJDID sSQL.Clear(); sSQL.Add("insert into XLWBBJDML"); sSQL.Add(" ( XLWBBJDML_BJDID,XLWBBJDML_WBBJDID,XLWBBJDML_SJLY,XLWBBJDML_WBBJDMC,XLWBBJDML_MLFZH,XLWBBJDML_FS,XLWBBJDML_FSXH,XLWBBJDML_EXCEL,XLWBBJDML_SHEET, "); sSQL.Add(" XLWBBJDML_LMHHS,XLWBBJDML_LMHHZ,XLWBBJDML_NRHHS,XLWBBJDML_NRHHZ, "); if (!string.IsNullOrEmpty(sHTBH)) { sSQL.Add(" XLWBBJDML_HTBH, "); } sSQL.Add(" XLWBBJDML_DRSJ,XLWBBJDML_YCL, XLWBBJDML_WHR,XLWBBJDML_WHRID,XLWBBJDML_WHSJ ) "); sSQL.Add(" values "); sSQL.Add(" ( :pBJDID,:pWBBJDID,:pSJLY,:pWBBJDMC,:pMLFZH,:pFS,:pFSXH,:pEXCEL,:pSHEET, "); sSQL.Add(" :pLMHHS,:pLMHHZ,:pNRHHS,:pNRHHZ, "); if (!string.IsNullOrEmpty(sHTBH)) { sSQL.Add(" :pHTBH, "); sSQL.ParamByName("pHTBH").Value = sHTBH; } sSQL.Add(" :pDRSJ, :YCL, :pWHR,:pWHRID,:pWHSJ ) "); sSQL.ParamByName("pBJDID").Value = sBJDID; sSQL.ParamByName("pWBBJDID").Value = sWBBJDID; if (!sBJDID.Trim().Equals("")) { sSQL.ParamByName("pSJLY").Value = "BJCP"; } else { sSQL.ParamByName("pSJLY").Value = "XSHT"; } string sMC = sFileName + "【" + sSheetName + "】"; sMC = XLBJDUtils.SubStringFunc(sMC, 100); string sEXECL = sFileName; sEXECL = XLBJDUtils.SubStringFunc(sEXECL, 60); string sSHEET = sSheetName; sSHEET = XLBJDUtils.SubStringFunc(sSHEET, 40); sSQL.ParamByName("pWBBJDMC").Value = sMC; if (iZFS == 1) { sSQL.ParamByName("pMLFZH").Value = 0; sSQL.ParamByName("pFS").Value = 0; sSQL.ParamByName("pFSXH").Value = 0; } else { sSQL.ParamByName("pMLFZH").Value = iMLFZH; sSQL.ParamByName("pFS").Value = iZFS; sSQL.ParamByName("pFSXH").Value = iDRtimes; } sSQL.ParamByName("pEXCEL").Value = sEXECL; sSQL.ParamByName("pSHEET").Value = sSheetName; sSQL.ParamByName("pLMHHS").Value = txtHHS.Value; sSQL.ParamByName("pLMHHZ").Value = txtHHZ.Value; if (iDRtimes < iZFS) { sSQL.ParamByName("pNRHHS").Value = txtHHZ.Value + 1 + Rcount * (iDRtimes - 1); sSQL.ParamByName("pNRHHZ").Value = Rcount * iDRtimes + txtHHZ.Value; } else { sSQL.ParamByName("pNRHHS").Value = txtHHZ.Value + 1 + Rcount * (iDRtimes - 1); sSQL.ParamByName("pNRHHZ").Value = iTotalRecords + txtHHZ.Value; } sSQL.ParamByName("YCL").Value = "N"; sSQL.ParamByName("pDRSJ").Value = sDRSJ; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); #endregion #region 生成XLWBBJDLM表数据----WBBJDID|外部报价单ID=======LMBH|栏目编号/BJDID sSQL.Clear(); sSQL.Add("insert into XLWBBJDLM ( "); sSQL.Add(" XLWBBJDLM_BJDID,XLWBBJDLM_WBBJDID,XLWBBJDLM_LMBH,XLWBBJDLM_LMMC,XLWBBJDLM_ZDLMLX,XLWBBJDLM_WHR,XLWBBJDLM_WHRID,XLWBBJDLM_WHSJ) "); sSQL.Add("values ( "); sSQL.Add(" :pBJDID,:pWBBJDID,:pLMBH,:pLMMC,:pZDLMLX,:pWHR,:pWHRID,:pWHSJ) "); //循环dic foreach (KeyValuePair kvp in dicLMMC) { sSQL.ParamByName("pBJDID").Value = sBJDID; sSQL.ParamByName("pWBBJDID").Value = sWBBJDID; sSQL.ParamByName("pLMBH").Value = kvp.Key; string sLMMC = kvp.Value; sLMMC = XLBJDUtils.SubStringFunc(sLMMC, 60); sSQL.ParamByName("pLMMC").Value = sLMMC; sSQL.ParamByName("pZDLMLX").Value = ""; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); } #endregion #region 生成XLWBBJDNR表数据------WBBJDID|外部报价单ID=======DRHH|导入行号/BJDID sSQL.Clear(); sSQL.Add("insert into XLWBBJDNR("); sSQL.Add(" XLWBBJDNR_BJDID, XLWBBJDNR_WBBJDID, XLWBBJDNR_DRHH, "); sSQL.Add(" XLWBBJDNR_LMNR01, XLWBBJDNR_LMNR02, XLWBBJDNR_LMNR03, XLWBBJDNR_LMNR04, XLWBBJDNR_LMNR05, XLWBBJDNR_LMNR06,"); sSQL.Add(" XLWBBJDNR_LMNR07, XLWBBJDNR_LMNR08, XLWBBJDNR_LMNR09, XLWBBJDNR_LMNR10, XLWBBJDNR_LMNR11, XLWBBJDNR_LMNR12,"); sSQL.Add(" XLWBBJDNR_LMNR13, XLWBBJDNR_LMNR14, XLWBBJDNR_LMNR15, XLWBBJDNR_LMNR16, XLWBBJDNR_LMNR17, XLWBBJDNR_LMNR18,"); sSQL.Add(" XLWBBJDNR_LMNR19, XLWBBJDNR_LMNR20, XLWBBJDNR_LMNR21, XLWBBJDNR_LMNR22, XLWBBJDNR_LMNR23, XLWBBJDNR_LMNR24,"); sSQL.Add(" XLWBBJDNR_LMNR25, XLWBBJDNR_LMNR26, XLWBBJDNR_LMNR27, XLWBBJDNR_LMNR28, XLWBBJDNR_LMNR29, XLWBBJDNR_LMNR30,"); sSQL.Add(" XLWBBJDNR_LMNR31, XLWBBJDNR_LMNR32, XLWBBJDNR_LMNR33, XLWBBJDNR_LMNR34, XLWBBJDNR_LMNR35, XLWBBJDNR_LMNR36,"); sSQL.Add(" XLWBBJDNR_LMNR37, XLWBBJDNR_LMNR38, XLWBBJDNR_LMNR39, XLWBBJDNR_LMNR40, XLWBBJDNR_LMNR41, XLWBBJDNR_LMNR42,"); sSQL.Add(" XLWBBJDNR_LMNR43, XLWBBJDNR_LMNR44, XLWBBJDNR_LMNR45, XLWBBJDNR_LMNR46, XLWBBJDNR_LMNR47, XLWBBJDNR_LMNR48,"); sSQL.Add(" XLWBBJDNR_LMNR49, XLWBBJDNR_LMNR50, XLWBBJDNR_LMNR51, XLWBBJDNR_LMNR52, XLWBBJDNR_LMNR53, XLWBBJDNR_LMNR54,"); sSQL.Add(" XLWBBJDNR_LMNR55, XLWBBJDNR_LMNR56, XLWBBJDNR_LMNR57, XLWBBJDNR_LMNR58, XLWBBJDNR_LMNR59, XLWBBJDNR_LMNR60)"); sSQL.Add("values (:XLWBBJDNR_BJDID, :XLWBBJDNR_WBBJDID, :XLWBBJDNR_DRHH, "); sSQL.Add(" :XLWBBJDNR_LMNR01, :XLWBBJDNR_LMNR02, :XLWBBJDNR_LMNR03, :XLWBBJDNR_LMNR04, :XLWBBJDNR_LMNR05, :XLWBBJDNR_LMNR06,"); sSQL.Add(" :XLWBBJDNR_LMNR07, :XLWBBJDNR_LMNR08, :XLWBBJDNR_LMNR09, :XLWBBJDNR_LMNR10, :XLWBBJDNR_LMNR11, :XLWBBJDNR_LMNR12,"); sSQL.Add(" :XLWBBJDNR_LMNR13, :XLWBBJDNR_LMNR14, :XLWBBJDNR_LMNR15, :XLWBBJDNR_LMNR16, :XLWBBJDNR_LMNR17, :XLWBBJDNR_LMNR18,"); sSQL.Add(" :XLWBBJDNR_LMNR19, :XLWBBJDNR_LMNR20, :XLWBBJDNR_LMNR21, :XLWBBJDNR_LMNR22, :XLWBBJDNR_LMNR23, :XLWBBJDNR_LMNR24,"); sSQL.Add(" :XLWBBJDNR_LMNR25, :XLWBBJDNR_LMNR26, :XLWBBJDNR_LMNR27, :XLWBBJDNR_LMNR28, :XLWBBJDNR_LMNR29, :XLWBBJDNR_LMNR30,"); sSQL.Add(" :XLWBBJDNR_LMNR31, :XLWBBJDNR_LMNR32, :XLWBBJDNR_LMNR33, :XLWBBJDNR_LMNR34, :XLWBBJDNR_LMNR35, :XLWBBJDNR_LMNR36,"); sSQL.Add(" :XLWBBJDNR_LMNR37, :XLWBBJDNR_LMNR38, :XLWBBJDNR_LMNR39, :XLWBBJDNR_LMNR40, :XLWBBJDNR_LMNR41, :XLWBBJDNR_LMNR42,"); sSQL.Add(" :XLWBBJDNR_LMNR43, :XLWBBJDNR_LMNR44, :XLWBBJDNR_LMNR45, :XLWBBJDNR_LMNR46, :XLWBBJDNR_LMNR47, :XLWBBJDNR_LMNR48,"); sSQL.Add(" :XLWBBJDNR_LMNR49, :XLWBBJDNR_LMNR50, :XLWBBJDNR_LMNR51, :XLWBBJDNR_LMNR52, :XLWBBJDNR_LMNR53, :XLWBBJDNR_LMNR54,"); sSQL.Add(" :XLWBBJDNR_LMNR55, :XLWBBJDNR_LMNR56, :XLWBBJDNR_LMNR57, :XLWBBJDNR_LMNR58, :XLWBBJDNR_LMNR59, :XLWBBJDNR_LMNR60)"); //循环ds int iStart = CMISproConvert.StrToInt(txtHHZ.Value.ToString()) + (iDRtimes - 1) * Rcount; int iEnd = 0; if (iDRtimes < iZFS) iEnd = iStart + Rcount; else iEnd = ds.Tables[0].Rows.Count; for (int i = iStart; i < iEnd; i++) { sSQL.ParamByName("XLWBBJDNR_BJDID").Value = sBJDID; sSQL.ParamByName("XLWBBJDNR_WBBJDID").Value = sWBBJDID; sSQL.ParamByName("XLWBBJDNR_DRHH").Value = i + 1; for (int j = 1; j <= 60; j++) { if (j <= ds.Tables[0].Columns.Count) { string sLMNR = ds.Tables[0].Rows[i][j - 1].ToString().Trim(); sLMNR = sLMNR.Replace("\n", " ").Replace("\r", " "); if (j <= 12) sLMNR = XLBJDUtils.SubStringFunc(sLMNR, 250); else sLMNR = XLBJDUtils.SubStringFunc(sLMNR, 60); sSQL.ParamByName("XLWBBJDNR_LMNR" + j.ToString().Trim().PadLeft(2, '0')).Value = sLMNR; } else { sSQL.ParamByName("XLWBBJDNR_LMNR" + j.ToString().Trim().PadLeft(2, '0')).Value = null; } } dberp.ExecSQL(sSQL); } #endregion } } //组织栏目名称 public static void ExcelColumnName(int iLMHHS,int iLMHHZ, DataSet ds, Dictionary dicLMMC) { dicLMMC.Clear(); int RowNameStart = iLMHHS - 1; int RowNameEnd = iLMHHZ - 1; //x1-1 //x2-1 x2-2 //x3-1 x3-2 x3-3 string sCellName = ""; for (int j = 0; j < ds.Tables[0].Columns.Count; j++) { if (!ds.Tables[0].Rows[RowNameStart][j].ToString().Trim().Equals("")) { sCellName = ds.Tables[0].Rows[RowNameStart][j].ToString().Trim(); } else { for (int k = j; k >= 0; k--) { if (!ds.Tables[0].Rows[RowNameStart][k].ToString().Trim().Equals("")) { sCellName = ds.Tables[0].Rows[RowNameStart][k].ToString().Trim(); break; } } } //行开始 for (int i = RowNameStart + 1; i <= RowNameEnd; i++) { if (!ds.Tables[0].Rows[i][j].ToString().Trim().Equals("")) { sCellName = sCellName + ds.Tables[0].Rows[i][j].ToString().Trim(); } else { for (int k = j; k >= 0; k--) { if (!ds.Tables[0].Rows[i][k].ToString().Trim().Equals("") && ds.Tables[0].Rows[i-1][k].ToString().Trim().Equals("")) { sCellName = sCellName + ds.Tables[0].Rows[i][k].ToString().Trim(); break; } } } } if (sCellName.Equals("")) { sCellName = "Columns" + (j+1).ToString().Trim(); } //if (sCellName.Length > 30) //{ // throw new Exception(string.Format("第{1}列拼接出的标题名称过长:{0}", sCellName, (j + 1).ToString().Trim())); //} if (j >= 60) { throw new Exception(string.Format("最大仅支持60个栏目,请检查是否存在空白栏目,目前栏目数:{0}", j+1)); } dicLMMC.Add((j+1).ToString().Trim().PadLeft(2, '0'), sCellName); } //throw new Exception(string.Format("!")); } private void ReadWJ(string sPath, string sSheetName, ref DataSet aDataExcel) { string sMessage = ""; aDataExcel = TExcelData.ReadExcel(sPath.Trim(), sSheetName, "",false, false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("文件读取失败!失败原因:" + sMessage.Trim()); } } private string sGetCellTest(DataRow Row, int ColumnIndex) { return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", ""); } //取得默认的sheet名称 private string GetDefaultSheetName(string sFilePath) { string connStr = GetConnString(sFilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string sSheetName = ""; if (sheetNames.Rows[0].Table.Rows.Count > 0) { sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } return sSheetName; } #endregion } }