C# WPF上位机开发(报表导出)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        对于在工厂上班的小伙伴来说,导出生产数据、生成报表,这是很习以为常的一个工作。之前的文章中,虽然我们也介绍了json脚本、sqlite数据库、mysql数据库这类数据保存的方式,但是它们只是我们程序员比较熟悉的数据保存形式。而工厂里面的工人,或者车间的管理人员来说,他们比较习惯的树汇总方式其实还是报表,简单来说就是excel表格。

        今天,我们正好学习下如果用c# wpf生成excel表格。在这过程中需要安装一下开源库ClosedXML。

1、安装好开源库ClosedXML

        ClosedXml里面有一个Excel库,里面确实实现可以帮助我们创建生成excel文件的功能。所以,第一步,还是要麻烦大家安装一下ClosedXml库,直接用NuGet安装就可以了,

C# WPF上位机开发(报表导出)_第1张图片

2、准备好测试界面

        测试界面可以做的比较简单一点,比如就是一个按钮就行,内容如下所示,


    
        
    

        转成界面的话,就应该是这样,

C# WPF上位机开发(报表导出)_第2张图片

3、开始设计代码

        代码中,最主要的内容其实就是按钮的回调函数。在函数中,一般有三个部分,第一就是准备excel的基本数据,这个数据结构DataTable就可以完成;第二个部分,就是选择保存的地址,一般会弹出一个对话框,让用户来进行选择;第三呢,就是用XlWorkbook把之前的DataTable数据收入进来,同时保存到对应的目录,如果整个过程没有问题,代表我们的过程就是ok的。

using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows;

namespace WpfApp
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        // construct function
        public MainWindow()
        {
            InitializeComponent();
        }

        // start button function
        private void Start_Click(object sender, RoutedEventArgs e)
        {
            // set the title for each column
            DataTable dataTable = new DataTable("Report");
            dataTable.Columns.Add("Name", typeof(string));
            dataTable.Columns.Add("Age", typeof(int));
            dataTable.Columns.Add("Gender", typeof(string));

            // add data
            dataTable.Rows.Add("Bill", 30, "Male");
            dataTable.Rows.Add("Jack", 25, "Male");
            dataTable.Rows.Add("Lily", 20, "Female");
      
            // choose path
            Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog();
            saveFileDialog.FileName = "Report";
            saveFileDialog.DefaultExt = ".xlsx";
            saveFileDialog.Filter = "Excel Workbook (.xlsx)|*.xlsx|All Files (*.*)|*.*";

            bool? result = saveFileDialog.ShowDialog();
            if (result == true)
            {
                try
                {
                    // create file
                    using (var workbook = new XLWorkbook())
                    {
                        // create datasheet
                        workbook.Worksheets.Add(dataTable);

                        // save it to relevant path
                        workbook.SaveAs(saveFileDialog.FileName);
                    }

                    MessageBox.Show("Successfully export the file!", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Error is:{ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
    }
}

4、测试和验证

        编译无误之后,就可以开始测试和验证。验证有两个部分,第一,需要看下对话框有没有弹出,提示我们文件已经成功导出;第二,需要看下导出的文件,里面的内容和我们之前设计的部分是不是真的一致。

C# WPF上位机开发(报表导出)_第3张图片

你可能感兴趣的:(C#,WPF上位机开发,c#,wpf,开发语言)