使用GemBox将数据从DataGridView导入现有Excel文件



我对编程和GemBox相当陌生。我发现了这段代码,它将数据从DataGridView插入到具有页眉和页脚的现有Excel工作表中。该代码完全替换了现有的excel文件,并删除了所有页眉和页脚。我想做的只是从单元格A:9开始插入数据,而不从其他excel单元格中删除预先存在的数据。有没有使用GemBox来完成这项工作?

private void replace_Click(object sender, EventArgs e)
{
var saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "XLSX files (*.xlsx)|*.xlsx";
saveFileDialog.FilterIndex = 3;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
var workbook = new ExcelFile();
var worksheet = workbook.Worksheets.Add("Sheet1");
var options = new ImportFromDataGridViewOptions();
options.ColumnHeaders = false;
options.StartRow = 8;       
options.StartColumn = 0;
DataGridViewConverter.ImportFromDataGridView(worksheet, this.dataGridView1, options);
workbook.Save(saveFileDialog.FileName);
}
}

如有任何帮助,我们将不胜感激。

使用此选项将数据从DataGridView导入到现有Excel工作表:

private void replace_Click(object sender, EventArgs e)
{
var saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "XLSX files (*.xlsx)|*.xlsx";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
var workbook = ExcelFile.Load("Path to your existing Excel file.");
var worksheet = workbook.Worksheets.ActiveWorksheet;
var options = new ImportFromDataGridViewOptions("A9");
DataGridViewConverter.ImportFromDataGridView(worksheet, this.dataGridView1, options);
workbook.Save(saveFileDialog.FileName);
}
}

请注意,这将从单元格A9开始导入数据,并替换导入范围内的任何现有数据。

换句话说,如果Excel文件的单元格A9、B9等中已经有一些数据,则这些数据最终将被覆盖。

如果您不希望这样,那么插入空行为DataGridView数据腾出空间,如下所示:

worksheet.Rows.InsertEmpty(8, this.dataGridView1.Rows.Count);
var options = new ImportFromDataGridViewOptions("A9");
DataGridViewConverter.ImportFromDataGridView(worksheet, this.dataGridView1, options);

最新更新