保存到现有的excel文件而无需打开新的excel文件

Recep EnesÇevlik

我有示例代码块,您可以在下面看到,此代码有效运行。但是这段代码对我来说还不够。所以我需要改善我的代码。首先,我有datagridview和这个datagridview创建我的数据块,但我不能在下一行之前写入新行。当我向datagridvew添加新数据块时,新数据必须在excel文件的旧数据下写入。

private void buttonExcel_Click(object sender, EventArgs e)
        {
            // creating Excel Application  
            Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
            // creating new WorkBook within Excel application  
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
            // creating new Excelsheet in workbook  
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            // see the excel sheet behind the program  
            app.Visible = true;
            // get the reference of first sheet. By default its name is Sheet1.  
            // store its reference to worksheet  
            worksheet = workbook.Sheets["Sheet1"];
            worksheet = workbook.ActiveSheet;
            // changing the name of active sheet  
            worksheet.Name = "Exported from gridview";
            // storing header part in Excel  
            for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
            {
                worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
            }
            // storing Each row and column value to excel sheet  
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                }
            }
            // save the application  

            workbook.SaveAs("c:\\PROJE TEKLİF FİYAT.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            // Exit from the application  
            app.Quit();
        }
米凯尔

我为此使用了ClosedXML库(通过NuGet),因为它使将数据表保存到excel非常简单。

首先,将现有电子表格作为数据表导入,如下所示:

    public DataTable GetData(string filename)
    {
        using (XLWorkbook workBook = new XLWorkbook(filename))
        {
            //Read the first Sheet from Excel file.
            IXLWorksheet workSheet = workBook.Worksheet(1);

            //Create a new DataTable.
            DataTable dt = new DataTable();

            //Loop through the Worksheet rows.
            bool firstRow = true;
            foreach (IXLRow row in workSheet.Rows())
            {
                //Use the first row to add columns to DataTable.
                if (firstRow)
                {
                    foreach (IXLCell cell in row.Cells())
                    {
                        dt.Columns.Add(cell.Value.ToString());
                    }
                    firstRow = false;
                }
                else
                {
                    //Add rows to DataTable.
                    dt.Rows.Add();
                    int i = 0;

                    foreach (IXLCell cell in row.Cells(row.FirstCellUsed().Address.ColumnNumber, row.LastCellUsed().Address.ColumnNumber))
                    {
                        dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString();
                        i++;
                    }
                }
            }
            return dt;
        }
    }

然后将datagridview转换为datatable,然后将现有数据和datagridview数据合并为一个数据表,然后另存为XLSX。

using ClosedXML.Excel;
...
private void saveDGV(DataTable existing)
{
    //Creating DataTable.
    DataTable dt = new DataTable();
 
    //Adding the Columns.
    foreach (DataGridViewColumn column in dataGridView1.Columns)
    {
        dt.Columns.Add(column.HeaderText, column.ValueType);
    }
 
    //Adding the Rows.
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        dt.Rows.Add();
        foreach (DataGridViewCell cell in row.Cells)
        {
            dt.Rows[dt.Rows.Count - 1][cell.ColumnIndex] = cell.Value.ToString();
        }
    }
    existing.Merge(dt);
    using (XLWorkbook wb = new XLWorkbook())
    {
        wb.Worksheets.Add(existing, "Exported from gridview");
        //Adjust widths of Columns.
        wb.Worksheet(1).Columns().AdjustToContents();
        wb.SaveAs("c:\\PROJE TEKLİF FİYAT.xlsx")
    }
}

您可以这样使用:

using ClosedXML.Excel;
...
private void buttonExcel_Click(object sender, EventArgs e)
        {
            DataTable existing = GetData("c:\\PROJE TEKLİF FİYAT.xlsx");
            saveDGV(existing);
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从现有的base64编码保存Excel文件

来自分类Dev

将现有的PdfDocument保存到文件

来自分类Dev

打开现有的 Excel 文件并通过 MS Project 在该文件中运行宏

来自分类Dev

使用现有的嵌套实体保存新的断开连接的实体,而无需复制现有的实体

来自分类Dev

如何使用 groovy 编辑现有的 excel 表,而无需创建相同 excel 的副本

来自分类Dev

在excel中打开文件而无需重新计算NOW()

来自分类Dev

使用现有的 Excel 文件保存数据并以新名称保存

来自分类Dev

修改Interop Excel以打开现有文件

来自分类Dev

在当前实例中打开一个现有的Excel文件

来自分类Dev

如何保存/覆盖现有的Excel文件而没有消息

来自分类常见问题

如何使用Pandas将新工作表保存在现有的Excel文件中?

来自分类Dev

使用OLE调用现有的Excel文件-Delphi

来自分类Dev

编辑现有的Excel文件C#npoi

来自分类Dev

使用OLE调用现有的Excel文件-Delphi

来自分类Dev

如何写入现有的Excel文件(XLS)

来自分类Dev

PHP-解析已检索并存储在变量中的excel / pdf文件的内容,而无需将内容保存到磁盘上的文件中

来自分类Dev

Microsoftgraph Excel计算而无需修改文件

来自分类Dev

将输出保存到新的Excel文件中

来自分类Dev

将数据结构保存在现有的 .mat 文件中,无需嵌套

来自分类Dev

自动刷新Excel ODC连接和数据透视,而无需打开文件PowerShell

来自分类Dev

使用现有的本地文件,无需选择

来自分类Dev

使用bat文件:在excel的现有(已打开)实例中打开excel

来自分类Dev

与bat文件:在excel的现有(已打开)实例中打开excel

来自分类Dev

在Google控制台中的现有Android应用中发布新优惠/功能,而无需上传新的APK文件

来自分类Dev

将列表保存到Excel文件

来自分类Dev

从 db 写入现有的 Excel 文件但具有不同的标题

来自分类Dev

如何将现有的Azure资源组保存到Resource Manager模板JSON文件中?

来自分类Dev

创建zip归档文件,而无需将归档文件保存到Ruby中的磁盘

来自分类Dev

在现有的vim会话中打开文件(Cygwin / mintty)

Related 相关文章

  1. 1

    从现有的base64编码保存Excel文件

  2. 2

    将现有的PdfDocument保存到文件

  3. 3

    打开现有的 Excel 文件并通过 MS Project 在该文件中运行宏

  4. 4

    使用现有的嵌套实体保存新的断开连接的实体,而无需复制现有的实体

  5. 5

    如何使用 groovy 编辑现有的 excel 表,而无需创建相同 excel 的副本

  6. 6

    在excel中打开文件而无需重新计算NOW()

  7. 7

    使用现有的 Excel 文件保存数据并以新名称保存

  8. 8

    修改Interop Excel以打开现有文件

  9. 9

    在当前实例中打开一个现有的Excel文件

  10. 10

    如何保存/覆盖现有的Excel文件而没有消息

  11. 11

    如何使用Pandas将新工作表保存在现有的Excel文件中?

  12. 12

    使用OLE调用现有的Excel文件-Delphi

  13. 13

    编辑现有的Excel文件C#npoi

  14. 14

    使用OLE调用现有的Excel文件-Delphi

  15. 15

    如何写入现有的Excel文件(XLS)

  16. 16

    PHP-解析已检索并存储在变量中的excel / pdf文件的内容,而无需将内容保存到磁盘上的文件中

  17. 17

    Microsoftgraph Excel计算而无需修改文件

  18. 18

    将输出保存到新的Excel文件中

  19. 19

    将数据结构保存在现有的 .mat 文件中,无需嵌套

  20. 20

    自动刷新Excel ODC连接和数据透视,而无需打开文件PowerShell

  21. 21

    使用现有的本地文件,无需选择

  22. 22

    使用bat文件:在excel的现有(已打开)实例中打开excel

  23. 23

    与bat文件:在excel的现有(已打开)实例中打开excel

  24. 24

    在Google控制台中的现有Android应用中发布新优惠/功能,而无需上传新的APK文件

  25. 25

    将列表保存到Excel文件

  26. 26

    从 db 写入现有的 Excel 文件但具有不同的标题

  27. 27

    如何将现有的Azure资源组保存到Resource Manager模板JSON文件中?

  28. 28

    创建zip归档文件,而无需将归档文件保存到Ruby中的磁盘

  29. 29

    在现有的vim会话中打开文件(Cygwin / mintty)

热门标签

归档