Hi Jan,
Thank you for your interest in Syncfusion Products.
Regret for the delayed response. Please try using RegisterGridAsSheet and AddNamedRange to achieve your requirements as shown below.
//loadBtn click
private void loadBtn_Click(object sender, EventArgs e)
{
openDlg = new OpenFileDialog();
DialogResult dr = openDlg.ShowDialog();
if (dr == DialogResult.OK)
{
Syncfusion.GridExcelConverter.GridExcelConverterControl gecc = new Syncfusion.GridExcelConverter.GridExcelConverterControl();
gecc.QueryImportExportCellInfo += new Syncfusion.GridExcelConverter.GridImportExportCellInfoEventHandler(gecc_QueryImportExportCellInfo);
gecc.ExcelToGrid(openDlg.FileName, varGrid.Model);
}
}
//In QueryImportExportCellInfo event
void gecc_QueryImportExportCellInfo(object sender, Syncfusion.GridExcelConverter.GridImportExportCellInfoEventArgs e)
{
if (e.Action == Syncfusion.GridExcelConverter.GridConverterAction.Import)
{
ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
IWorkbook workbook = application.Workbooks.Open(openDlg.FileName);
varGrid.TableStyle.CellType = "FormulaCell";
GridFormulaEngine engine;
int sheetFamilyID = GridFormulaEngine.CreateSheetFamilyID();
GridFormulaEngine.RegisterGridAsSheet("Sheet1", this.varGrid.Model, sheetFamilyID);
engine = ((GridFormulaCellModel)varGrid.Model.CellModels["FormulaCell"]).Engine;
INames Names = workbook.Names;//Collect NamedRanges from Excel workbook
foreach (IName nam in Names)
{
engine.AddNamedRange(nam.Name.ToUpper(), nam.Value.Replace("'", ""));//Add NamedRanges to GridControl
}
workbook.Close();
excelEngine.Dispose();
}
}
//In SaveBtn Click
private void saveBtn_Click(object sender, EventArgs e)
{
saveDlg = new SaveFileDialog();
DialogResult dr = saveDlg.ShowDialog();
if (dr == DialogResult.OK)
{
//other codes…
Hashtable ranges = new Hashtable();
ranges = engine.NamedRanges;//Collect NamedRanges from GridControl;
foreach (string key in ranges.Keys)
{
IName name = sheet0.Names.Add(key);
name.RefersToRange = sheet0.Range[ranges[key].ToString()];
sheet0.Range[ranges[key].ToString()].Value = name.Value; // assign named ranges to excel
}
Syncfusion.GridExcelConverter.GridExcelConverterControl gecc = new Syncfusion.GridExcelConverter.GridExcelConverterControl();
gecc.ExportRange(GridRangeInfo.Table(), varGrid.Model, sheet0, Syncfusion.GridExcelConverter.ConverterOptions.Default);
//other codes..
}
}
Please refer the modified sample which illustrates the above.
http://www.syncfusion.com/uploads/redirect.aspx?&team=support&file=WindowsFormsApplication1-507481537.zipPlease let me know if you have any further concerns.
Regards,
Christopher K.