C#winform点击按钮下载数据库中表的字段到Excel上

C#winform点击按钮下载数据库中表的字段到Excel上

需求:C#winform点击按钮下载数据库中表的字段到Excel,并计算下载消耗的时间以及文件存放位置。

C#实现

using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using OfficeOpenXml;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Net.Http;namespace WindowsFormsApp1
{public partial class 下载表字段 : Form{/ 数据库连接字符串private string connectionString = "server=127.0.0.1;uid=sa;pwd=xyz@0123456;database=test";private async void buttonDownload_Click(object sender, EventArgs e){using (SaveFileDialog saveFileDialog = new SaveFileDialog()){saveFileDialog.Filter = "Excel files (*.xlsx)|*.xlsx";saveFileDialog.Title = "Save Excel Template";saveFileDialog.FileName = "用户模板";if (saveFileDialog.ShowDialog() == DialogResult.OK){string savePath = saveFileDialog.FileName;try{// 连接到 SQL Server 数据库using (SqlConnection sqlConnection = new SqlConnection(connectionString)){await sqlConnection.OpenAsync();// 从数据库中读取字段名using (SqlCommand command = new SqlCommand("SELECT * FROM Employee", sqlConnection))using (SqlDataReader reader = await command.ExecuteReaderAsync()){// 获取字段数量int totalColumns = reader.FieldCount;// 初始化进度条progressBar1.Maximum = totalColumns + 1;progressBar1.Value = 0;// 创建 Excel 文件using (ExcelPackage excelPackage = new ExcelPackage()){ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Template");// 写入字段名int columnIndex = 1;for (int i = 0; i < totalColumns; i++){worksheet.Cells[1, columnIndex].Value = reader.GetName(i);columnIndex++;// 更新进度条progressBar1.Value++;await Task.Delay(10); // 延时以更新进度条显示}excelPackage.SaveAs(new FileInfo(savePath));}}// 计算所导出Excel消耗的时间//TimeSpan elapsedTime = DateTime.Now - startTime;//MessageBox.Show("导出Excel消耗时间: " + elapsedTime.ToString("g"));// 计算所导出 Excel 消耗的时间(秒)TimeSpan elapsedTime = DateTime.Now - startTime;double seconds = elapsedTime.TotalSeconds;//MessageBox.Show("导出 Excel 消耗时间: " + seconds.ToString("F2") + " 秒");MessageBox.Show("下载完成。" + "文件存放位置:" + savePath + "导出 Excel 消耗时间: " + seconds.ToString("F2") + " 秒");// 打开文件//System.Diagnostics.Process.Start(savePath);}}catch (Exception ex){MessageBox.Show("下载出错:" + ex.Message);}}}}}
}

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

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

相关文章

Flutter 如何更新showModalBottomSheet 中的数据

showDialog(context: context,builder: (context) {String label test;//StatefulBuilderreturn StatefulBuilder(//在这里为了区分&#xff0c;在构建builder的时候将setState方法命名为了setDialogState。builder: (context, setDialogState) {print(label $label);return …

【LeetCode】268. 丢失的数字

268. 丢失的数字 难度&#xff1a;简单 题目 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3…

[Makefile] include 关键字

在 Makefile 中&#xff0c;include 关键字的作用是引入其他文件的内容&#xff0c;通常用于将其他 Makefile 文件&#xff08;通常是头文件&#xff09;的内容包含到当前的 Makefile 中。这样可以实现模块化管理和代码重用。 include使用 使用 include 关键字的语法如下&…

网络攻击(一)--安全渗透简介

1. 安全渗透概述 目标 了解渗透测试的基本概念了解渗透测试从业人员的注意事项 1.1. 写在前面的话 在了解渗透测试之前&#xff0c;我们先看看&#xff0c;信息安全相关的法律是怎么样的 中华人民共和国网络安全法 《中华人民共和国网络安全法》由全国人民代表大会常务委员会…

Spring Cloud切换内嵌Tomcat为宝兰德Application Server

目录 替换Tomcat中间件Tomcat是什么Spring Cloud剔除tomcat引入宝兰德Application Server打包运行授权导入 替换Tomcat中间件 Tomcat是什么 Spring Cloud剔除tomcat <!--集成springmvc框架 --><dependency><groupId>org.springframework.boot</groupId&…

Boost:asio多io_service,多线程run

多io_service,多线程run,相当于多个线程分别处理注册在不同io_service上的回调,也就是每个线程排某个io_service的异步处理: //mio_mth.cpp #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time_types.hpp> #include <iostream>…

MAC PHP版本安装问题

安装php 7.4版本不成功 Error: php7.4 has been disabled because it is a versioned formula! 因为php7.4官方已经不再维护&#xff0c;所以Hombrew将该php版本移出了repository&#xff0c;所以安装不了。 解决办法 从第三方仓库中安装 //将第三方仓库加入brew brew tap sh…

7.1 C++11指针空值—nullptr

一、NULL和nullptr区别 NULL是宏定义&#xff0c;nullptr是关键字。 #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif nullptr可以隐式转换为任意指针类型&#xff0c;而NULL需要显示转换 void func(char *) {std::cout <<…

Java安全之Commons Collections6分析

CC6分析 import org.apache.commons.collections.*; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransformer; impo…

Flask 动态路由、请求数据接收、视图函数返回值详解

一、动态路由 在前面的博客中&#xff0c;我们学习了如何创建基本的 Flask 应用&#xff0c;并定义了一些简单的路由。但有时候&#xff0c;我们需要更加灵活的路由&#xff0c;能够根据用户请求的不同来动态生成响应。Flask 提供了动态路由的功能&#xff0c;使我们能够轻松处…

上网监控软件——安全与隐私的平衡

网络已经成为人们生活和工作中不可或缺的一部分。然而&#xff0c;随着网络使用的普及&#xff0c;网络安全问题也日益突出。上网监控软件作为网络安全领域的一个重要组成部分&#xff0c;在保护企业和家庭网络安全方面发挥着重要作用。 本文将探讨上网监控软件的背景、功能、优…

我的Android播放器封装经验

近段时间&#xff0c;电视家不能用了&#xff0c;好吧&#xff0c;自己开发一个APP。其实也不是开发&#xff0c;而是基于现有的播放器核心自己封装一个&#xff0c;只要能够非常方便操作观看电视就好。 当然&#xff0c;前提是要有节目源&#xff0c;这个我早已完成&#xff…

1-2算法基础-常用库函数

1.排序 sort(first,last,cmp) first指向要排序范围的第一个元素&#xff0c;从0起 last指向要排序范围的最后一个元素的下一个位置 cmp&#xff08;可选&#xff09;&#xff0c;自定义函数&#xff0c;默认从小到大 评测系统 #include <iostream> #include<algorith…

Java一对一聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

three.js 入门三:buffergeometry贴图属性(position、index和uvs)

环境&#xff1a; three.js 0.159.0 一、基础知识 geometry&#xff1a;决定物体的几何形状、轮廓&#xff1b;material&#xff1a;决定物体呈现的色彩、光影特性、贴图皮肤&#xff1b;mesh&#xff1a;场景中的物体&#xff0c;由geometry和materia组成&#xff1b;textu…

十五、机器学习进阶知识:K-Means聚类算法

文章目录 1、聚类概述2、K-Means聚类算法原理3、K-Means聚类实现3.1 基于SKlearn实现K-Means聚类3.2 自编写方式实现K-Means聚类 4、算法不足与解决思路4.1 存在的问题4.2 常见K值确定方法4.3 算法评估优化思路 1、聚类概述 聚类&#xff08;Clustering&#xff09;是指将不同…

浅谈WPF之控件拖拽与拖动

使用过office的visio软件画图的小伙伴都知道&#xff0c;画图软件分为两部分&#xff0c;左侧图形库&#xff0c;存放各种图标&#xff0c;右侧是一个画布&#xff0c;将左侧图形库的图标控件拖拽到右侧画布&#xff0c;就会生成一个新的控件&#xff0c;并且可以自由拖动。那如…

Python---面向对象其他特性

1、类属性 Python中&#xff0c;属性可以分为实例属性和类属性。 类属性就是 类对象中定义的属性&#xff0c;它被该类的所有实例对象所共有。通常用来记录 与这类相关 的特征&#xff0c;类属性 不会用于记录 具体对象的特征。 在Python中&#xff0c;一切皆对象。类也是一…

1 接口测试介绍

在软件测试工作中&#xff0c;接口测试是必不可少的。接口测试一般是发生在单元测试之后&#xff0c;系统测试之前。当开发人员输出API文档后&#xff0c;测试人员就可以开始编写接口测试用例了。接口测试可以让测试人员更早的介入&#xff0c;不需要等待前后端联调完成才开始测…

银行卡二要素API的应用案例:从在线购物到金融投资

引言 随着互联网技术的不断发展&#xff0c;人们的金融需求也在不断增加。随之而来的是各种新型金融服务的涌现&#xff0c;让用户的金融体验更加便利快捷。其中&#xff0c;银行卡二要素API的应用&#xff0c;则为用户的金融体验和安全性提供了极大的保障。 银行卡二要素API…