private void tsbImp_Click(object sender, EventArgs e) { try { OpenFileDialog dia = new OpenFileDialog(); dia.Title = "导入数据"; dia.Filter = "Microsoft Excel 工作表(*.xlsx;*.xls)|*.xlsx;*.xls"; dia.DefaultExt = "xls"; #region 加载已设置的默认路径 try { XmlDocument doc = new XmlDocument(); doc.Load(UIContext.GetUIContext().ClientSetupPath + @"\SR5.0_Config.xml"); if (doc.GetElementsByTagName("voufilepath").Count > 0) { dia.InitialDirectory = doc.GetElementsByTagName("voufilepath").Item(0).InnerText; } } catch { } #endregion if (dia.ShowDialog() == DialogResult.OK) { Workbook workBook = new Workbook(dia.FileName); Worksheet workSheet = workBook.Worksheets[0]; Cells cells = workSheet.Cells; int iFixedRows = 2; //Excel模板中的标题行数 dtExcel = workSheet.Cells.ExportDataTableAsString(1, 0, workSheet.Cells.MaxDataRow - iFixedRows + 2, workSheet.Cells.MaxDataColumn + 1, true); #region 检验是否正确模板 //副本 -yyyy/mm/dd- 副本 if (!dtExcel.Columns.Contains("用友明细科目") || !dtExcel.Columns.Contains("辅助帐供应商名称") || !dtExcel.Columns.Contains("财务明细科目") || !dtExcel.Columns.Contains("是否辅助标志")) { UIP.FrameManager.SetStatusMessage("请选择正确的模板导入!", true, Color.Red); return; } #endregion #region 改列名 if (dtExcel.Rows.Count > 0) { dtExcel.Columns[0].ColumnName = "xh"; dtExcel.Columns["用友明细科目"].ColumnName = "snckemu_code"; dtExcel.Columns["辅助帐供应商名称"].ColumnName = "snckemu_name"; dtExcel.Columns["财务明细科目"].ColumnName = "scwkemu_code"; dtExcel.Columns["年"].ColumnName = "year"; dtExcel.Columns["是否辅助标志"].ColumnName = "sflag"; } #endregion #region 去除空行数据 dtExcel.DefaultView.RowFilter = "snckemu_code<>'' and scwkemu_code<>''"; dtExcel = dtExcel.DefaultView.ToTable(); #endregion #region 添加ID DataColumn c = new DataColumn(); c.DataType = typeof(string); c.ColumnName = "id"; dtExcel.Columns.Add(c); #endregion if (CheckExcel(dtExcel, ref dtErr)) { //dtSubjRela = dtExcel; ShowExcelImp(dtExcel); } else { showerr: FrmErrSubjRela frmErr = new FrmErrSubjRela(); frmErr.dtErr = dtErr; frmErr.Init(); if (frmErr.ShowDialog() == DialogResult.OK) { //frmErr.Close(); frmErr.Dispose(); if (ImpAcc(dtErr)) { if (CheckExcel(dtExcel, ref dtErr)) { ShowExcelImp(dtExcel); } else { goto showerr; } } } } } } catch (Exception x) { UIP.FrameManager.SetStatusMessage(x.Message, true, Color.Red); } }