最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# Winform中DataGridView導(dǎo)出為Excel的實(shí)現(xiàn)示例

 更新時間:2022年05月09日 15:10:37   作者:嵌入式悅翔園  
本文主要介紹了C# Winform中DataGridView導(dǎo)出為Excel的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、前言

話不多說,跟著我的步驟保證你也能成功,下面直接開始!

2、效果展示

導(dǎo)出前

在這里插入圖片描述

導(dǎo)出后

在這里插入圖片描述

3、詳細(xì)步驟

下面是詳細(xì)操作步驟,請跟著我的步伐,一步一步進(jìn)行操作,保證你能夠?qū)С龀晒Γ?/p>

3.1 添加NPOI和NPOI.Excel包

首先請請確定你的vs已經(jīng)打開了【解決方案資源管理器】,打開步驟見下圖:

在這里插入圖片描述

在資源管理器中找到【引用】,然后在【引用】上右鍵選擇【管理程序包】并點(diǎn)擊,如下圖:

在這里插入圖片描述

在新打開的窗口中點(diǎn)擊【瀏覽】并在搜索框中依次輸入NPOI和NPOI.Excel并進(jìn)行安裝,安裝按鈕位置如下圖:

在這里插入圖片描述

待安裝完成再進(jìn)行下一步

3.2 創(chuàng)建NPOIHelper類

首先在資源管理器中選中你的項(xiàng)目,【右鍵】找到【添加】–>【類】,具體如下圖:

在這里插入圖片描述

創(chuàng)建一個名字為【NPOIHelper.cs】的類并打開

3.2.1 導(dǎo)入命名空間

復(fù)制下面的代碼,覆蓋你自動生成的命名空間

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

3.2.2 插入代碼

將下面的代碼導(dǎo)入到下圖位置:

在這里插入圖片描述

public class ExcelUtility
        {
            /// <summary>
            /// 將excel導(dǎo)入到datatable
            /// </summary>
            /// <param name="filePath">excel路徑</param>
            /// <param name="isColumnName">第一行是否是列名</param>
            /// <returns>返回datatable</returns>
            public static DataTable ExcelToDataTable(string filePath, bool isColumnName)
            {
                DataTable dataTable = null;
                FileStream fs = null;
                DataColumn column = null;
                DataRow dataRow = null;
                IWorkbook workbook = null;
                ISheet sheet = null;
                IRow row = null;
                ICell cell = null;
                int startRow = 0;
                try
                {
                    using (fs = File.OpenRead(filePath))
                    {
                        // 版本后綴控制
                        if (filePath.IndexOf(".xlsx") > 0)
                            workbook = new XSSFWorkbook(fs);
                        // 版本后綴控制
                        else if (filePath.IndexOf(".xls") > 0)
                            workbook = new HSSFWorkbook(fs);

                        if (workbook != null)
                        {
                            sheet = workbook.GetSheetAt(0);//讀取第一個sheet,當(dāng)然也可以循環(huán)讀取每個sheet
                            dataTable = new DataTable();
                            if (sheet != null)
                            {
                                int rowCount = sheet.LastRowNum;//總行數(shù)
                                if (rowCount > 0)
                                {
                                    IRow firstRow = sheet.GetRow(0);//第一行
                                    int cellCount = firstRow.LastCellNum;//列數(shù)

                                    //構(gòu)建datatable的列
                                    if (isColumnName)
                                    {
                                        startRow = 1;//如果第一行是列名,則從第二行開始讀取
                                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                        {
                                            cell = firstRow.GetCell(i);
                                            if (cell != null)
                                            {
                                                if (cell.StringCellValue != null)
                                                {
                                                    column = new DataColumn(cell.StringCellValue);
                                                    dataTable.Columns.Add(column);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                        {
                                            column = new DataColumn("column" + (i + 1));
                                            dataTable.Columns.Add(column);
                                        }
                                    }

                                    //填充行
                                    for (int i = startRow; i <= rowCount; ++i)
                                    {
                                        row = sheet.GetRow(i);
                                        if (row == null) continue;

                                        dataRow = dataTable.NewRow();
                                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                                        {
                                            cell = row.GetCell(j);
                                            if (cell == null)
                                            {
                                                dataRow[j] = "";
                                            }
                                            else
                                            {
                                                //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)
                                                switch (cell.CellType)
                                                {
                                                    case CellType.Blank:
                                                        dataRow[j] = "";
                                                        break;
                                                    case CellType.Numeric:
                                                        short format = cell.CellStyle.DataFormat;
                                                        //對時間格式(2015.12.5、2015/12/5、2015-12-5等)的處理
                                                        if (format == 14 || format == 31 || format == 57 || format == 58)
                                                            dataRow[j] = cell.DateCellValue;
                                                        else
                                                            dataRow[j] = cell.NumericCellValue;
                                                        break;
                                                    case CellType.String:
                                                        dataRow[j] = cell.StringCellValue;
                                                        break;
                                                }
                                            }
                                        }
                                        dataTable.Rows.Add(dataRow);
                                    }
                                }
                            }
                        }
                    }
                    return dataTable;
                }
                catch (Exception)
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                    return null;
                }
            }
        }
        public static bool DataTableToExcel(DataTable dt, string txtPath)
        {
            bool result = false;
            IWorkbook workbook = null;
            FileStream fs = null;
            IRow row = null;
            ISheet sheet = null;
            ICell cell = null;
            try
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    workbook = new HSSFWorkbook();
                    sheet = workbook.CreateSheet("Sheet0");//創(chuàng)建一個名稱為Sheet0的表
                    int rowCount = dt.Rows.Count;//行數(shù)
                    int columnCount = dt.Columns.Count;//列數(shù)

                    //設(shè)置列頭
                    row = sheet.CreateRow(0);//excel第一行設(shè)為列頭
                    for (int c = 0; c < columnCount; c++)
                    {
                        cell = row.CreateCell(c);
                        cell.SetCellValue(dt.Columns[c].ColumnName);
                    }

                    //設(shè)置每行每列的單元格,
                    for (int i = 0; i < rowCount; i++)
                    {
                        row = sheet.CreateRow(i + 1);
                        for (int j = 0; j < columnCount; j++)
                        {
                            cell = row.CreateCell(j);//excel第二行開始寫入數(shù)據(jù)
                            cell.SetCellValue(dt.Rows[i][j].ToString());
                        }
                    }
                    using (fs = File.OpenWrite(txtPath))
                    {
                        workbook.Write(fs);//向打開的這個xls文件中寫入數(shù)據(jù)
                        result = true;
                    }
                }
                MessageBox.Show("導(dǎo)出成功");
                return result;
            }
            catch (Exception)
            {
                if (fs != null)
                {
                    fs.Close();
                }
                return false;
            }

        }

3.3 給畫面添加SaveFileDialog

首先在工具箱里找到SaveFileDialog(如果不知到工具箱在哪的可以點(diǎn)擊上方的【視圖】–> 【工具箱】)

在這里插入圖片描述

點(diǎn)住SaveFileDialog拖入頁面中效果如上圖所示

3.4 引入命名空間

將下方命名空間引入到你按鈕所在的cs中(主要是3、4)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

3.5 給按鈕添加click事件

給按鈕添加click事件(直接雙擊按鈕即可),并在click函數(shù)中插入以下代碼

//打開文件對話框,導(dǎo)出文件
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Title = "保存文件";
saveFileDialog1.Filter = "Excel 文件(*.xls)|*.xls|Excel 文件(*.xlsx)|*.xlsx|所有文件(*.*)|*.*";
saveFileDialog1.FileName = "用戶信息.xls"; //設(shè)置默認(rèn)另存為的名字
if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    string txtPath = this.saveFileDialog1.FileName;
    string sql = "select ID as ID,UserName as 用戶名,LoginAccount as 賬號,UserPower as 用戶權(quán)限,Founder as 創(chuàng)建者,Addtime as 創(chuàng)建日期,Activestate as 狀態(tài) from UserData";
    SqlHelp sqlHelper = new SqlHelp();
    DataTable dt = sqlHelper.GetDataTableValue(sql);
    NPOIHelper.DataTableToExcel(dt, txtPath);
}

注意:上面的saveFileDialog1要和你視圖里的一樣一般沒問題,sql語句我就不詳細(xì)講了不會的可以看我其他文章。

4、 成功

相信大家根據(jù)我的步驟應(yīng)該都能成功了,如果成功了別忘了三連哦!如果在操作過程中遇到什么問題記得評論或者私信。

5、寫在最后

到此這篇關(guān)于C# Winform中DataGridView導(dǎo)出為Excel的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# Winform中DataGridView導(dǎo)出為Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c#生成縮略圖的實(shí)現(xiàn)方法

    c#生成縮略圖的實(shí)現(xiàn)方法

    c#生成縮略圖的實(shí)現(xiàn)方法,需要的朋友可以參考一下
    2013-04-04
  • c#配置文件中自定義塊節(jié)點(diǎn)的方法

    c#配置文件中自定義塊節(jié)點(diǎn)的方法

    在.netcore中我們非常方便獲取配置文件節(jié)點(diǎn)參數(shù),但是在非.netcore下一般 我們是使用中方法,本文我們將給大家詳細(xì)介紹c#配置文件中自定義塊節(jié)點(diǎn)的方法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • C#中單例的實(shí)現(xiàn)方法

    C#中單例的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#中單例的實(shí)現(xiàn)方法,以實(shí)例形式分析了C#中單例的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • C#過濾DataTable中空數(shù)據(jù)和重復(fù)數(shù)據(jù)的示例代碼

    C#過濾DataTable中空數(shù)據(jù)和重復(fù)數(shù)據(jù)的示例代碼

    這篇文章主要給大家介紹了關(guān)于C#過濾DataTable中空數(shù)據(jù)和重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • c#通過進(jìn)程調(diào)用cmd判斷登錄用戶權(quán)限代碼分享

    c#通過進(jìn)程調(diào)用cmd判斷登錄用戶權(quán)限代碼分享

    最近自己開發(fā)軟件需要讀取本地配置文件,因?yàn)榈卿浻脩舻臋?quán)限不夠會導(dǎo)致無法讀取文件進(jìn)而導(dǎo)致程序崩潰,查了一些解決方法,代碼分享如下
    2013-12-12
  • C# 變量作用域常用說明小結(jié)

    C# 變量作用域常用說明小結(jié)

    在C#編程中,變量作用域是一個重要概念,指的是變量在何處被定義和可以訪問的范圍,正確理解和使用變量作用域有助于提升代碼的可讀性和避免潛在的錯誤,感興趣的可以了解一下
    2024-10-10
  • C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法

    C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法

    這篇文章主要介紹了C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法,需要的朋友可以參考下
    2015-09-09
  • Entity Framework主從表的增刪改

    Entity Framework主從表的增刪改

    這篇文章介紹了Entity Framework主從表的增刪改,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#修改MAC地址類的實(shí)例

    C#修改MAC地址類的實(shí)例

    C#修改MAC地址類的實(shí)例,需要的朋友可以參考一下
    2013-03-03
  • WPF實(shí)現(xiàn)自定義控件的幾種方法

    WPF實(shí)現(xiàn)自定義控件的幾種方法

    Windows Presentation Foundation (WPF) 是微軟提供的一種用于構(gòu)建 Windows 應(yīng)用程序的開發(fā)框架,在WPF中,自定義控件的實(shí)現(xiàn)是一個非常重要的方面,本文將詳細(xì)探討WPF中實(shí)現(xiàn)自定義控件的幾種方法,分析其優(yōu)缺點(diǎn),并提供示例代碼,需要的朋友可以參考下
    2024-12-12

最新評論

汝城县| 白山市| 闵行区| 墨竹工卡县| 吉林市| 惠来县| 咸阳市| 那曲县| 广河县| 阜平县| 郓城县| 光泽县| 临沭县| 上饶县| 双辽市| 河东区| 屯昌县| 察雅县| 东至县| 滨海县| 鲁山县| 建瓯市| 客服| 沙雅县| 搜索| 富民县| 济南市| 宁陕县| 平邑县| 彩票| 武城县| 布尔津县| 吕梁市| 巫溪县| 望都县| 临颍县| 临沧市| 克什克腾旗| 文化| 杨浦区| 汨罗市|