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