0

我对编程和 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);
            }
        }

任何帮助将不胜感激。

4

1 回答 1

0

使用它可以将数据从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);
于 2021-05-06T07:31:22.093 回答