コード例 #1
0
ファイル: SomeSubjRela.cs プロジェクト: perfectless/djstuff
        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);
            }
        }