How to create excel file with multiple sheets from DataSet using C#

后端 未结 2 1044
遥遥无期
遥遥无期 2021-01-02 05:37

How to create excel file with multiple sheets from DataSet using C#. I have successfully created an excel file with single sheet. But I am not able to do that for multiple

相关标签:
2条回答
  • 2021-01-02 05:50

    Here is a simple C# class that programatically creates an Excel WorkBook and adds two sheets to it, and then populates both sheets. Finally, it saves the WorkBook to a file in the application root directory so that you can inspect the results...

    public class Tyburn1
    {
        object missing = Type.Missing;
        public Tyburn1()
        {
            Excel.Application oXL = new Excel.Application();
            oXL.Visible = false;
            Excel.Workbook oWB = oXL.Workbooks.Add(missing);
            Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet;
            oSheet.Name = "The first sheet";
            oSheet.Cells[1, 1] = "Something";
            Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
                            as Excel.Worksheet;
            oSheet2.Name = "The second sheet";
            oSheet2.Cells[1, 1] = "Something completely different";
            string fileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)        
                                    + "\\SoSample.xlsx";
            oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook,
                missing, missing, missing, missing,
                Excel.XlSaveAsAccessMode.xlNoChange,
                missing, missing, missing, missing, missing);
            oWB.Close(missing, missing, missing);
            oXL.UserControl = true;
            oXL.Quit();
        }
    }
    

    To do this, you would need to add a reference to Microsoft.Office.Interop.Excel to your project (you may have done this already since you are creating one sheet).

    The statement that adds the second sheet is...

    Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
                                as Excel.Worksheet;
    

    the '1' argument specifies a single sheet, and it can be more if you want to add several sheets at once.

    Final note: the statement oXL.Visible = false; tells Excel to start in silent mode.

    0 讨论(0)
  • 2021-01-02 05:56
    var groupedSheetList = UserData
        .GroupBy (u => u.date)
        .Select (grp => grp.ToList ())
        .ToList ();
    

    You can try this

    using (var package = new ExcelPackage ()) 
        {
            foreach (var item in groupedSheetList) {
                var workSheet = package.Workbook.Worksheets.Add (item[0].date);
        }
    }
    
    0 讨论(0)
提交回复
热议问题