WPF Form C#提交按钮到excel

Posted

技术标签:

【中文标题】WPF Form C#提交按钮到excel【英文标题】:WPF Form C# submit button to excel 【发布时间】:2022-01-13 13:59:57 【问题描述】:

我正在尝试获取在 Visual Studio WPF C# 中创建的表单以提交到新的 excel 工作簿,该工作簿将保存到共享网络驱动器上。我进行了一些挖掘以试图找到最佳解决方案,并且遇到了 NPOI,但与我需要做的相比,所有解决方案似乎都相当复杂。是否有一些简单的资源可供我参考以简单地创建工作簿并将数据插入特定单元格 - 然后保存?

我在 NuGet 中看到的两个相关包是 DotNetCore.NPOI 和我应该使用的 NPOI?

到目前为止我尝试过的是:

private void Button_Click(object sender, RoutedEventArgs e)
    
        using (var fs = new FileStream("Result12345.xlsx", FileMode.Create, FileAccess.Write))
        
            IWorkbook workbook = new XSSFWorkbook();
            ISheet excelSheet = workbook.CreateSheet("Sheet1");
           
            workbook.Write(fs);

            MessageBox.Show("Form submitted successfully");
        
    

这被输出到:项目文件夹\bin\Debug\net6.0-windows,它似乎创建了工作簿并保存(假设我需要做的就是把网络驱动器的路径放在文件流中然后这应该很容易)但是我如何将数据插入到单元格特定的单元格中?

【问题讨论】:

我可以使用 (var fs = new FileStream(@"\\ipaddress\sharename\Result12345.xlsx", FileMode.Create, FileAccess.写)) 【参考方案1】:

我已经通过互操作 COM 库使用 Microsoft Excel,应该可以通过添加作为参考直接在您的 WPF 应用程序中使用。

首先,在解决方案资源管理器中,打开引用,右键单击并添加引用。

然后,选择您现在或将来有兴趣使用的 Office 库,例如其他应用程序。

在任何代码的顶部,您将添加“使用”子句

using Microsoft.Office.Interop.Excel;
using System;

这里有一个示例代码 sn-p,因此您可以控制任何活动的工作簿、工作表、循环显示显式行/列以及获取给定单元格的文本。

    public void tryingExcel()
    

        var SomeSampleFile = @"C:\Users\Public\SomeExcelFile.xlsx";
        //Start Excel and get Application object.
        var XL = new Microsoft.Office.Interop.Excel.Application();
        XL.DisplayAlerts = false;
        XL.Workbooks.Add();

        // _Workbook and _Worksheet are part of Microsoft.Office.Interop.Excel
        // via "using" clause at top of code
        _Workbook wb = XL.ActiveWorkbook;
        wb.Sheets.Add();

        _Worksheet ws = wb.ActiveSheet;

        ws.Cells[2, 1] = "Date/Time:";
        ws.Cells[2, 2] = DateTime.Now;

        for (var ir = 4; ir < 10; ir++)
            ws.Cells[ir, 2] = "testing " + ir;;


        for (var ir = 4; ir < 10; ir++)
            ws.Cells[ir, 4] = ws.Cells[ir, 2].Text.Trim();


        XL.ActiveWorkbook.SaveAs(SomeSampleFile, XlFileFormat.xlOpenXMLWorkbook,
                Type.Missing, Type.Missing, false, false,
                XlSaveAsAccessMode.xlNoChange,
                XlSaveConflictResolution.xlLocalSessionChanges,
                Type.Missing, Type.Missing, Type.Missing, false);
        XL.Quit();

    

【讨论】:

【参考方案2】:

我是这样想的:

private void Button_Click(object sender, RoutedEventArgs e)
    
        
        using (var fs = new FileStream(@"\\ipaddress\sharename\Result12345.xlsx", FileMode.Create, FileAccess.Write))
        
            IWorkbook workbook = new XSSFWorkbook();
            ISheet excelSheet = workbook.CreateSheet("Sheet1");
            //define cell to insert into
            var cellTest = excelSheet.CreateRow(0).CreateCell(0);
            //set cell value 
            cellTest.SetCellValue("Hello?");
            //save the excel sheet
            workbook.Write(fs);
            MessageBox.Show("Form submitted successfully");
        
    

我想我只是不明白为什么当它们已经存在时我必须创建一个行/单元格。而不是设置类似Cell(0,1).value = "Something"

【讨论】:

您正在创建一个新的空工作表。尚无现有单元格。

以上是关于WPF Form C#提交按钮到excel的主要内容,如果未能解决你的问题,请参考以下文章

多个按钮提交一个form表单

一个按钮在一个表单中怎么提交两个方法,一个添加,一个删除

有一个form,包含两个text,和两个按钮,当用户按第一个按扭时把数据提交到url1,按第二个按钮提交到url2,怎么实现呀?

asp点击提交按钮后让按钮变灰无法使用,该如何实现?

如何在一个form里用多个提交按钮

asp.net中form表单多个按钮submit提交到后台的实例