簡體   English   中英

WPF 表格 C# 提交按鈕到 excel

[英]WPF Form C# submit button to excel

我正在嘗試獲取在 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");
        }
    }

這被輸出到: Project Folder \bin\Debug\net6.0-windows 並且它似乎創建了工作簿並保存(假設我需要做的就是將網絡驅動器的路徑放在文件 stream 中,那么應該是容易)但是我如何將數據插入到單元格特定的單元格中?

我是這樣想的:

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"

我已經通過互操作 COM 庫與 Microsoft Excel 合作,並且應該通過添加作為參考直接在您的 WPF 應用程序中可用。

首先,在解決方案資源管理器中,打開引用,右鍵單擊並添加引用。 在此處輸入圖像描述

然后,選擇您現在或將來有興趣使用的 Office 庫,例如其他應用程序。 首先添加對項目的引用

在任何代碼的頂部,您將添加“使用”子句

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

這是一個示例代碼片段,因此您可以控制任何活動的工作簿、工作表、循環顯式行/列以及獲取給定單元格的文本。

    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();

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM