public virtual void Import() { Control targetControl = FocusedGrid(); if (targetControl == null) { return; } if (targetControl.GetType().Equals(typeof(GridControl))) { try { GridControl gd = (GridControl)targetControl; GridView abv = (GridView)gd.MainView; DataTable sdt = (DataTable)gd.DataSource; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Excel|*.xls;*.xlsx"; if (openFileDialog.ShowDialog() != DialogResult.Cancel) { SharedFunc.ShowProcess(this, 0, 5); SpreadsheetControl spreadsheetControl = new SpreadsheetControl(); spreadsheetControl.LoadDocument(openFileDialog.FileName); SharedFunc.ShowProcess(1); Worksheet worksheet = spreadsheetControl.Document.Worksheets.ActiveWorksheet; CellCollection cellCollection = worksheet.Cells; DataTable idt = worksheet.CreateDataTable(cellCollection.CurrentRegion, true); //务必添加引用DevExpress.Docs.v16.2.dll DataTableExporter exporter = worksheet.CreateDataTableExporter(cellCollection.CurrentRegion, idt, true); exporter.Export(); SharedFunc.ShowProcess(1); foreach (DataColumn dc in idt.Columns) { foreach (GridColumn bgc in abv.Columns) { if (bgc.Caption.Trim().Equals(dc.ColumnName.Trim())) { dc.ColumnName = bgc.FieldName; break; } } } //克隆结构 变更数据类型 DataTable ndt = idt.Clone(); foreach (DataColumn dc in ndt.Columns) { foreach (DataColumn bgc in sdt.Columns) { if (bgc.Caption.Trim().Equals(dc.ColumnName.Trim())) { dc.ColumnName = bgc.ColumnName; dc.DataType = bgc.DataType; break; } } } foreach (DataRow dr in idt.Rows) { DataRow ndr = ndt.NewRow(); foreach (DataColumn dc in idt.Columns) { ndr[dc.ColumnName] = dr[dc.ColumnName]; } ndt.Rows.Add(ndr); } SharedFunc.ShowProcess(1); sdt.Merge(ndt, true); SharedFunc.ShowProcess(5); } } catch (Exception ex) { throw ex; } finally { SharedFunc.ShowProcess(int.MaxValue); } } }