欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?WPF實現數據記錄導出excel

 更新時間:2024年11月26日 09:21:36   作者:猿享天開  
這篇文章主要為大家詳細介紹了C#如何基于WPF實現數據記錄導出excel的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

引言        

實現基于C#的WPF應用程序導出數據到 Excel 的功能,可以使用一個流行的庫,比如 EPPlus 或 ClosedXML。這些庫可以將 DataTable 數據導出為 Excel 文件,并提供簡單易用的 API。 下面是使用 EPPlus 庫實現導出功能的示例實現過程介紹。

為了更詳細說明實現過程,在 C# WPF 應用程序中,我們可以創(chuàng)建一個學生成績查詢系統(tǒng),該系統(tǒng)從數據庫中提取數據,在界面上顯示,并允許用戶將數據導出為 Excel 文件。我們將使用 DataGrid 顯示數據,并使用 EPPlus 庫實現導出功能。以下是實現該功能的詳細步驟。

項目準備

步驟 1:設置數據庫

假設我們使用 SQLite 數據庫,其中有一個名為 StudentScores 的表。該表具有以下結構:

Column NameData Type
StudentIDINTEGER
NameTEXT
SubjectTEXT
ScoreREAL

步驟 2:安裝 NuGet 包

在項目中安裝以下 NuGet 包:

System.Data.SQLite:用于連接 SQLite 數據庫。(根據實際應用中選擇數據庫,本文僅以 SQLite 數據庫為例)

EPPlus:用于導出數據到 Excel。

Install-Package System.Data.SQLite
Install-Package EPPlus

創(chuàng)建 WPF 界面

在 XAML 文件中,創(chuàng)建一個簡單的界面,包括一個 DataGrid 和一個導出按鈕。

<Window x:Class="StudentScoreApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="學生成績查詢" Height="400" Width="600">
    <Grid>
        <DataGrid x:Name="scoreDataGrid" AutoGenerateColumns="True" HeadersVisibility="Column" IsReadOnly="True" 
                  Margin="10,10,10,50" />
        <Button Content="導出" Width="100" Height="30" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="10" Click="ExportScore_Click"/>
    </Grid>
</Window>

后端代碼

步驟 1:從數據庫加載數據

在代碼后面,編寫從數據庫加載數據的方法。

using System;
using System.Data;
using System.Data.SQLite;
using System.Windows;
 
namespace StudentScoreApp
{
    public partial class MainWindow : Window
    {
        private DataTable _scoreTable;
 
        public MainWindow()
        {
            InitializeComponent();
            LoadData();
        }
 
        private void LoadData()
        {
            string connectionString = "Data Source=StudentScores.db;Version=3;";
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                connection.Open();
                string query = "SELECT StudentID, Name, Subject, Score FROM StudentScores";
                SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, connection);
                _scoreTable = new DataTable();
                adapter.Fill(_scoreTable);
                scoreDataGrid.ItemsSource = _scoreTable.DefaultView;
            }
        }
    }
}

步驟 2:導出數據到 Excel

實現 ExportScore_Click 方法,用于將數據導出到 Excel 文件。

using OfficeOpenXml;
using Microsoft.Win32;
using System.IO;
 
namespace StudentScoreApp
{
    public partial class MainWindow : Window
    {
        // 其他代碼...
 
        private void ExportScore_Click(object sender, RoutedEventArgs e)
        {
            if (_scoreTable == null || _scoreTable.Rows.Count == 0)
            {
                MessageBox.Show("沒有數據可導出。");
                return;
            }
 
            SaveFileDialog saveFileDialog = new SaveFileDialog
            {
                Filter = "Excel Files|*.xlsx",
                Title = "保存為 Excel 文件",
                FileName = "StudentScores.xlsx"
            };
 
            if (saveFileDialog.ShowDialog() == true)
            {
                try
                {
                    using (ExcelPackage package = new ExcelPackage())
                    {
                        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Scores");
 
                        // 將 DataTable 寫入 Excel
                        worksheet.Cells["A1"].LoadFromDataTable(_scoreTable, true);
 
                        // 保存到文件
                        FileInfo fileInfo = new FileInfo(saveFileDialog.FileName);
                        package.SaveAs(fileInfo);
 
                        MessageBox.Show("成績已成功導出到 Excel 文件。");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("導出時發(fā)生錯誤: " + ex.Message);
                }
            }
        }
    }
}

EPPlus  LicenseContext 屬性設置

由于EPPlus 5.0 及以上版本引入了一個商業(yè)許可模式,它需要在代碼中明確聲明使用的許可上下文。對于大多數非商業(yè)用途,可以將許可上下文設置LicenseContext.NonCommercial。這個非常重要,如果未設置將會在運行時報錯:

在ExcelPackage package = new ExcelPackage()報錯:Please set the ExcelPackage.LicenseContext property. See https://epplussoftware.com/developers/licenseexception

需要在代碼中設置 ExcelPackage.LicenseContext 屬性。這個非常重要,以下是解決上面問題的代碼示例:

// 在您的應用程序入口點,如 Main 方法或者其他初始化代碼中執(zhí)行以下設置
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 設置為非商業(yè)使用

關鍵點說明

數據庫連接:使用 System.Data.SQLite 庫進行數據庫連接和數據檢索。確保連接字符串正確,并且數據庫文件可訪問。

數據綁定:將 DataTable 綁定到 DataGrid 的 ItemsSource,以便在界面上顯示數據。

EPPlus 導出:使用 EPPlus 庫將 DataTable 數據導出到 Excel。使用 LoadFromDataTable 方法可以輕松將表格加載到 Excel 工作表中。

用戶體驗:使用 SaveFileDialog 允許用戶選擇保存位置,并提供導出成功與否的反饋。

通過這些步驟,您可以在 WPF 應用程序中實現從數據庫讀取、顯示學生成績,并能夠將數據導出到 Excel 文件的功能。這種方法不僅簡單而且高效,能夠處理大多數常見的需求。

到此這篇關于C# WPF實現數據記錄導出excel的文章就介紹到這了,更多相關WPF數據導出excel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論