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

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

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

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

1、安装好开源库ClosedXML

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

2、准备好测试界面

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

<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp"mc:Ignorable="d"Title="ExportDemo" Height="450" Width="800"><Grid><Button x:Name="export"  Content="export" Foreground="Green" Click="Start_Click" HorizontalAlignment="Left" Margin="300,195,0,0" VerticalAlignment="Top" Width="95" Height="45"><Button.Resources><Style TargetType="{x:Type Border}"><Setter Property="CornerRadius" Value="5"></Setter></Style></Button.Resources></Button></Grid>
</Window>

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

3、开始设计代码

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

using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows;namespace WpfApp
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{// construct functionpublic MainWindow(){InitializeComponent();}// start button functionprivate void Start_Click(object sender, RoutedEventArgs e){// set the title for each columnDataTable dataTable = new DataTable("Report");dataTable.Columns.Add("Name", typeof(string));dataTable.Columns.Add("Age", typeof(int));dataTable.Columns.Add("Gender", typeof(string));// add datadataTable.Rows.Add("Bill", 30, "Male");dataTable.Rows.Add("Jack", 25, "Male");dataTable.Rows.Add("Lily", 20, "Female");// choose pathMicrosoft.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 fileusing (var workbook = new XLWorkbook()){// create datasheetworkbook.Worksheets.Add(dataTable);// save it to relevant pathworkbook.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、测试和验证

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用mac电脑,1、使用快捷命令打开访达,2、使用终端命令创建文件,3、使用命令打开创建的文件,并且在vscode中打开

如何使用mac电脑 1、使用快捷命令打开访达 optioncommand空格键 快速进入访达 shiftcmmandn 创建一个空目录 2、使用终端命令创建文件 2.1进入文件夹 在终端页面输入“cd /Users/yunf/Desktop/”并按回车键&#xff08;此时进入到桌面文件夹&#xff0c;如果需要进入到其它…

代码随想录二刷 | 二叉树 |二叉搜索树中的搜索

代码随想录二刷 &#xff5c; 二叉树 &#xff5c;二叉搜索树中的搜索 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 700.二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回…

apisix admin api 403 Forbidden(接口请求403)

故事背景 当你通过admin api 接口方式执行相关操作时&#xff0c;例如route、upstream设置&#xff0c;接口返回403 Forbidden&#xff0c; 例如 请求 curl -i "http://192.168.100.1:9180/apisix/admin/routes" -H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X…

【Gradio】1、Gradio 是什么

官网&#xff1a;https://www.gradio.app/ 一、Gradio 是什么 Gradio是一个用于创建机器学习模型交互式界面的 Python 库。通过Gradio&#xff0c;可以快速地为模型构建一个可视化的、易于使用的Web界面&#xff0c;无需编写任何Web前端代码。 Gradio 支持多种不同类型的输入…

从Java 8到Java 17:Spring Boot项目升级的终极指南

Java的世界一直在进步&#xff0c;随着Java 17的发布&#xff0c;众多开发者面临着将他们的Spring Boot应用从Java 8迁移到最新版本的任务。在这篇博客中&#xff0c;我将详细介绍如何平滑、高效地完成这一升级过程。从梳理可能的挑战到实际操作步骤&#xff0c;我将为你的升级…

win32 菜单编程学习1

新建一个Win32空工程; 添加一个main.cpp,添加一个窗口的win32代码; 运行,出来一个窗口,此时没有菜单; 然后在资源中插入菜单; 编辑菜单; 此时自动生成resource.h; 里面包含, #define IDR_MENU1 101 #define ID_TEST1_TEST101 …

嵌入式开发——ADC模拟信号和数字信号

模拟信号和数字信号 模拟信号 自然界中大多数物理量是连续变化的,比如温度、声音、压力等灯,它们在一定时间内,可以有无限多个不同的取值,这些信号就是模拟信号。模拟信号就是指用连续变化的物理量所表示的信号。 自然界中的物理量都需要通过传感器将其转换成电信号后,才能进…

桥接模式-举例

概叙&#xff1a;桥接模式用一种巧妙的方式处理多层继承存在的问题&#xff0c; 用抽象关联取代了传统的多层继承&#xff0c; 将类之间的静态继承关系转换为动态的对象组合关系&#xff0c; 使得系统更加灵活&#xff0c;并易于扩展&#xff0c; 同时有效控制了系统中类的个数…

Python武器库开发-武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七)

武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七) Git是一种版本控制系统&#xff0c;用于跟踪文件的更改和协调多人开发项目。它可以记录文件的历史更改&#xff0c;协助多人协作开发&#xff0c;并提供分支管理功能。Git是一个分布式系统&#xff0c;意味着每个人在…

听说!Art-DAQ实现了与LabVIEW的无缝连接

前言 阿尔泰科技与时俱进&#xff0c;推出Art-DAQ程序&#xff0c;与LabVIEW无缝连接&#xff0c;形成系统平台体系。持续不断地获取行业新技术&#xff0c;完善自主知识产权产品的研发&#xff0c;为客户提供优质服务。 什么是Labview&#xff1f; 从产品的角度来看&#x…

java项目应用MQTT传输数据

一、概述 近期做的一个项目需要传输数据给第三方。根据协定&#xff0c;采用MQTT进行数据的发送和订阅。一般来说&#xff0c;不通系统进行数据对接&#xff0c;一般采用RESTFul接口&#xff0c;走http。mqtt的话&#xff0c;顾名思义&#xff0c;就是一个消息队列。相比RESTF…

透彻掌握GIT基础使用

网址 https://learngitbranching.js.org/?localezh_CN 清屏 clear重新开始reset

科荣AIO UtilServlet存在任意文件读取漏洞

文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 科荣AIO是一款企业管理软件&#xff0c;提供企业一体化管理解决方案。它整合了ERP&#xff08;如进销存、财务管理&#xff09;、OA&#xff08;办公自动化&#xff09;、CRM&#xff08;客户关系管理&#xff09…

阿里云数据库PolarDB费用价格_MySQL版_PolarDB_分布式版

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…

Leetcode—1572.矩阵对角线元素的和【简单】

2023每日刷题&#xff08;七十三&#xff09; Leetcode—1572.矩阵对角线元素的和 实现代码 class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int n mat.size();if(n 1) {return mat[0][0];}int sum 0;int i 0, j n - 1;while(i &…

Bean 生命周期 和 SpringMVC 执行过程

这里简单记录下 Bean 生命周期的过程&#xff0c;方便自己日后面试用。源码部分还没看懂&#xff0c;这里先贴上结论 源码 结论

遥感技术应用于作物类型种植面积估算实例

1.农作物遥感分类 1.1 利用多时相环境星 CCD 数据作物分类识别实验 采用支持向量机分类器进行基于象素遥感影像分类方法。在分类过程中&#xff0c;分别对不同日期的单景环境星数据以及不同日期环境星数据的组合进行分类&#xff0c;以评价环境星在作物分类中的应用潜力&#x…

云计算:OpenStack 配置云主机实例的资源实现内网互通

目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 &#xff08;cirros系统&#xff09; 7.创建云主机 cs_02 &#xff08;cirros系统&#xff09; 8.创建云主机 cs_03 &#xff08;cirros系统&#xff09; …

NFC物联网智能锁安全测试研究

针对短距离无线通信在物联网智能锁实际运用中的安全机制问题&#xff0c;通过理论分析和实际操作演示潜在的攻击流程&#xff0c;发现其存在的安全漏洞并提出可行的加固方法&#xff0c;并对加固后的通信系统进行CPN建模与安全性分析&#xff0c;对无线通信协议的安全性能提升、…

处理urllib.request.urlopen报错UnicodeEncodeError:‘ascii‘

参考&#xff1a;[Python3填坑之旅]一urllib模块网页爬虫访问中文网址出错 目录 一、报错内容 二、报错截图 三、解决方法 四、实例代码 五、运行截图 六、其他UnicodeEncodeError: ascii codec 问题 一、报错内容 UnicodeEncodeError: ascii codec cant encode charac…