簡體   English   中英

在2 Tab Control C#中將數據從DataGridView導出到Excel

[英]Export data to Excel from DataGridView in 2 Tab Control C#

我想問一些我不知道如何解決的問題。

請幫幫我,所以我需要開發一個應用程序,同時准備將其導出到excel,但是此應用程序只能按一個選項卡之一導出文件,因此我需要手動加入它們,我需要知道如何制作只能是1個文件,也可以是2張excel文件,

謝謝

private void DOCUMENT_GENERATOR(object sender, string DocPath)
{
    try
    {
        foreach string DateTimeID = string.Format("{0:yyyyMMMdd}", DateTime.Now) + "_" + string.Format("{0:hhmmss}", DateTime.Now);
        var resul = from c in Class.TreeMenusCls.items where c.ID.ToString() == treeView1.SelectedNode.Name select new { c.ID, c.MenuName, c.ParentID, c.Tag, c.CreateCtl, c.HeaderOnly };
        foreach (var cat in resul)
        {
            var get_query = from s in QueryCollectionTable.Select() where Convert.ToInt16(s["KEY_MENUS"]) == MenuIDSelected orderby s["PRIORITY"] select s;
            foreach (var Eq in get_query)
            {
                TabControl Tab;
                Tab = (TabControl)this.Controls.Find("Tab" + Eq["KEY_MENUS"], true)[0];
                Control.ControlCollection SearchCtl = Tab.TabPages[Convert.ToInt16(Eq["PRIORITY"])].Controls;

                foreach (Control c in SearchCtl)
                {
                    if (c.Name == "Grid" + Eq["NO_ID"])
                    {
                        Thread[] Tr = new Thread[0];
                        Array.Resize(ref Tr, Tr.Length + 1);

                        int priority = Convert.ToInt16(Eq["PRIORITY"]);
                        string query_name = Eq["QUERY_NAME"].ToString();
                        string menu_name = cat.MenuName;
                        int formated = Convert.ToInt16(Eq["FORMATED"]);
                        string row_start = Eq["ROW_START"].ToString();
                        string draft_location = Eq["DRAFT_LOCATION"].ToString();
                        string run_macro_name = Eq["RUN_MACRO_NAME"].ToString();

                        if (sender == EXCEL_CMD_GENERATE)
                        {
                            if (formated == 0)
                                Tr[Tr.Length - 1] = new Thread(new ThreadStart(delegate { this.Obj[0].ExcelGenerator((DataGridView)c, Tab, priority, query_name, menu_name, DateTimeID, DocPath); }));
                            else if (formated == 1)
                                Tr[Tr.Length - 1] = new Thread(new ThreadStart(delegate { this.Obj[0].ExcelFormated((DataGridView)c, Tab, priority, query_name, menu_name, DateTimeID, DocPath, formated, row_start, draft_location, run_macro_name); }));
                        }
                        if (sender == TEXT_CMD_GENERATE)
                            Tr[Tr.Length - 1] = new Thread(new ThreadStart(delegate { this.Obj[0].TextGenerator((DataGridView)c, Tab, priority, query_name, menu_name, DateTimeID, DocPath); }));
                        if (sender == CSV_CMD_GENERATE)
                            Tr[Tr.Length - 1] = new Thread(new ThreadStart(delegate { this.Obj[0].CsvGenerator((DataGridView)c, Tab, priority, query_name, menu_name, DateTimeID, DocPath); }));
                        if (sender == XML_CMD_GENERATE)
                            Tr[Tr.Length - 1] = new Thread(new ThreadStart(delegate { this.Obj[0].XmlGenerator((DataGridView)c, Tab, priority, query_name, menu_name, DateTimeID, DocPath); }));
                        Tr[Tr.Length - 1].Start();
                    }
                }
            }
        }
    }
    catch (ArgumentNullException a)
    {
        Console.WriteLine(a.Message);
    }
}

要將任何數據導出到excel,可以使用ClosedXML.Report。 它是用於生成報告的工具,您可以使用XLSX模板輕松地將.NET類中的任何數據導出到Excel。

在此處查看更多信息https://github.com/ClosedXML/ClosedXML.Report

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM