Exporting the values in List to excel

后端 未结 12 1382
隐瞒了意图╮
隐瞒了意图╮ 2020-12-05 18:36

Hi I am having a list container which contains the list of values. I wish to export the list values directly to Excel. Is there any way to do it directly?

相关标签:
12条回答
  • 2020-12-05 19:01

    Using ClosedXML library( there is no need to install MS Excel

    I just write a simple example to show you how you can name the file, the worksheet and select cells:

        var workbook = new XLWorkbook();
        workbook.AddWorksheet("sheetName");
        var ws = workbook.Worksheet("sheetName");
    
        int row = 1;
        foreach (object item in itemList)
        {
            ws.Cell("A" + row.ToString()).Value = item.ToString();
            row++;
        }
    
        workbook.SaveAs("yourExcel.xlsx");
    

    If you prefer you can create a System.Data.DataSet or a System.Data.DataTable with all data and then just add it as a workseet with workbook.AddWorksheet(yourDataset) or workbook.AddWorksheet(yourDataTable);

    0 讨论(0)
  • 2020-12-05 19:03

    OK, here is a step-by-step guide if you want to use COM.

    1. You have to have Excel installed.
    2. Add a reference to your project to the excel interop dll. To do this on the .NET tab select Microsoft.Office.Interop.Excel. There could be multiple assemblies with this name. Select the appropriate for your Visual Studio AND Excel version.
    3. Here is a code sample to create a new Workbook and fill a column with the items from your list.

    using NsExcel = Microsoft.Office.Interop.Excel;
    
    public void ListToExcel(List<string> list)
    {
        //start excel
        NsExcel.ApplicationClass excapp = new Microsoft.Office.Interop.Excel.ApplicationClass();
    
        //if you want to make excel visible           
        excapp.Visible = true;
    
        //create a blank workbook
        var workbook = excapp.Workbooks.Add(NsExcel.XlWBATemplate.xlWBATWorksheet);
    
        //or open one - this is no pleasant, but yue're probably interested in the first parameter
        string workbookPath = "C:\test.xls";
        var workbook = excapp.Workbooks.Open(workbookPath,
            0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
            true, false, 0, true, false, false);
    
        //Not done yet. You have to work on a specific sheet - note the cast
        //You may not have any sheets at all. Then you have to add one with NsExcel.Worksheet.Add()
        var sheet = (NsExcel.Worksheet)workbook.Sheets[1]; //indexing starts from 1
    
        //do something usefull: you select now an individual cell
        var range = sheet.get_Range("A1", "A1");
        range.Value2 = "test"; //Value2 is not a typo
    
        //now the list
        string cellName;
        int counter = 1;
        foreach (var item in list)
        {
            cellName = "A" + counter.ToString();
            var range = sheet.get_Range(cellName, cellName);
            range.Value2 = item.ToString();
            ++counter;
        }
    
        //you've probably got the point by now, so a detailed explanation about workbook.SaveAs and workbook.Close is not necessary
        //important: if you did not make excel visible terminating your application will terminate excel as well - I tested it
        //but if you did it - to be honest - I don't know how to close the main excel window - maybee somewhere around excapp.Windows or excapp.ActiveWindow
    }
    
    0 讨论(0)
  • 2020-12-05 19:06

    Exporting values List to Excel

    1. Install in nuget next reference
    2. Install-Package Syncfusion.XlsIO.Net.Core -Version 17.2.0.35
    3. Install-Package ClosedXML -Version 0.94.2
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using ClosedXML;
    using ClosedXML.Excel;
    using Syncfusion.XlsIO;
    
    namespace ExporteExcel
    {
        class Program
        {
            public class Auto
            {
                public string Marca { get; set; }
    
                public string Modelo { get; set; }
                public int Ano { get; set; }
    
                public string Color { get; set; }
                public int Peronsas { get; set; }
                public int Cilindros { get; set; }
            }
            static void Main(string[] args)
            {
                //Lista Estatica
                List<Auto> Auto = new List<Program.Auto>()
                {
                    new Auto{Marca = "Chevrolet", Modelo = "Sport", Ano = 2019, Color= "Azul", Cilindros=6, Peronsas= 4 },
                    new Auto{Marca = "Chevrolet", Modelo = "Sport", Ano = 2018, Color= "Azul", Cilindros=6, Peronsas= 4 },
                    new Auto{Marca = "Chevrolet", Modelo = "Sport", Ano = 2017, Color= "Azul", Cilindros=6, Peronsas= 4 }
                };
                //Inizializar Librerias
                var workbook = new XLWorkbook();
                workbook.AddWorksheet("sheetName");
                var ws = workbook.Worksheet("sheetName");
                //Recorrer el objecto
                int row = 1;
                foreach (var c in Auto)
                {
                    //Escribrie en Excel en cada celda
                    ws.Cell("A" + row.ToString()).Value = c.Marca;
                    ws.Cell("B" + row.ToString()).Value = c.Modelo;
                    ws.Cell("C" + row.ToString()).Value = c.Ano;
                    ws.Cell("D" + row.ToString()).Value = c.Color;
                    ws.Cell("E" + row.ToString()).Value = c.Cilindros;
                    ws.Cell("F" + row.ToString()).Value = c.Peronsas;
                    row++;
    
                }
                //Guardar Excel 
                //Ruta = Nombre_Proyecto\bin\Debug
                workbook.SaveAs("Coches.xlsx");
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-05 19:06

    You could output them to a .csv file and open the file in excel. Is that direct enough?

    0 讨论(0)
  • 2020-12-05 19:09

    The simplest way using ClosedXml.

    Imports ClosedXML.Excel
    
    var dataList = new List<string>() { "a", "b", "c" };
    var workbook = new XLWorkbook();     //creates the workbook
    var wsDetailedData = workbook.AddWorksheet("data"); //creates the worksheet with sheetname 'data'
    wsDetailedData.Cell(1, 1).InsertTable(dataList); //inserts the data to cell A1 including default column name
    workbook.SaveAs(@"C:\data.xlsx"); //saves the workbook
    

    For more info, you can also check wiki of ClosedXml. https://github.com/closedxml/closedxml/wiki

    0 讨论(0)
  • 2020-12-05 19:13

    Using the CSV idea, if it's just a list of Strings. Assuming l is your list:

    using System.IO;
    
    using(StreamWriter sw = File.CreateText("list.csv"))
    {
      for(int i = 0; i < l.Count; i++)
      {
        sw.WriteLine(l[i]);
      }
    }
    
    0 讨论(0)
提交回复
热议问题