it-swarm.com.de

Wie kann ich Daten in eine Excel-Datei exportieren?

Ich habe eine Excel-Datei mit Daten darin. Ich möchte einige bestimmte Zeilen davon in eine andere Excel-Datei schreiben, die ich mit Code erstellt habe. Die Indexe dieser Zeilen habe ich übrigens in einer Liste. Wie kann ich das machen?

16
M_Mogharrabi

MS bietet das OpenXML SDK V 2.5 an - siehe https://msdn.Microsoft.com/en-us/library/bb448854(v=office.15).aspx

Dies kann MS Office-Dateien (einschließlich Excel) lesen + schreiben ...

Weitere Option siehe http://www.codeproject.com/KB/office/OpenXML.aspx

WENN Sie mehr wie Rendering, Formeln usw. benötigen, gibt es verschiedene kommerzielle Bibliotheken wie Aspose und Flexcel ...

12
Yahia
 private void button1_Click(object sender, EventArgs e)
    {
        Excel.Application xlApp ;
        Excel.Workbook xlWorkBook ;
        Excel.Worksheet xlWorkSheet ;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.ApplicationClass();
        xlWorkBook = xlApp.Workbooks.Add(misValue);

        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

        xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();

        releaseObject(xlWorkSheet);
        releaseObject(xlWorkBook);
        releaseObject(xlApp);

        MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
    }

    private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }

Der obige Code wird direkt von csharp.net übernommen. Bitte sehen Sie sich die Seite an.

5
Jethro

Ich habe interop verwendet, um Excel zu öffnen und die Spaltenbreiten zu ändern, sobald die Daten fertig sind. Wenn Sie interop verwenden, um die Daten in eine neue Excel-Arbeitsmappe zu spucken (wenn Sie dies möchten), ist dies furchtbar langsam. Stattdessen habe ich ein CSV generiert und dann die CSV in Excel geöffnet. Das hat seine eigenen Probleme, aber ich fand das die schnellste Methode.

Konvertieren Sie zuerst die CSV:

        // Convert array data into CSV format.
        // Modified from http://csharphelper.com/blog/2018/04/write-a-csv-file-from-an-array-in-c/.
        private string GetCSV(List<string> Headers, List<List<double>> Data)
        {
            // Get the bounds.
            var rows = Data[0].Count;
            var cols = Data.Count;
            var row = 0;


            // Convert the array into a CSV string.
            StringBuilder sb = new StringBuilder();

            // Add the first field in this row.
            sb.Append(Headers[0]);

            // Add the other fields in this row separated by commas.
            for (int col = 1; col < cols; col++)
                sb.Append("," + Headers[col]);

            // Move to the next line.
            sb.AppendLine();

            for (row = 0; row < rows; row++)
            {
                // Add the first field in this row.
                sb.Append(Data[0][row]);

                // Add the other fields in this row separated by commas.
                for (int col = 1; col < cols; col++)
                    sb.Append("," + Data[col][row]);

                // Move to the next line.
                sb.AppendLine();
            }

            // Return the CSV format string.
            return sb.ToString();
        }

Dann exportieren Sie es nach Excel!

    public void ExportToExcel()
    {

        // Initialize app and pop Excel on the screen.
        var excelApp = new Excel.Application
        {
            Visible = true
        };

        // I use unix time to give the files a unique name that's almost somewhat useful.
        DateTime dateTime = DateTime.UtcNow;
        long unixTime = ((DateTimeOffset)dateTime).ToUnixTimeSeconds();
        var path = @"C:\Users\my\path\here + unixTime + ".csv";

        var csv = GetCSV();
        File.WriteAllText(path, csv);
        // Create a new workbook and get its active sheet.
        excelApp.Workbooks.Open(path);

        var workSheet = (Excel.Worksheet)excelApp.ActiveSheet;

        // iterrate through each value and throw it in the chart
        for (var column = 0; column < Data.Count; column++)
        {
            ((Excel.Range)workSheet.Columns[column + 1]).AutoFit();
        }

        currentSheet = workSheet;

    }

Du musst auch ein paar Sachen installieren ...

  1. Klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf die Lösung und wählen Sie "NuGet-Pakete verwalten". Fügen Sie Microsoft.Office.Interop.Excel hinzu.
  2. Es könnte jetzt tatsächlich funktionieren, wenn Sie das Projekt so erstellt haben, wie Sie es von interop gewollt haben. Wenn es immer noch nicht funktioniert, musste ich ein neues Projekt in einer anderen Kategorie erstellen. Wählen Sie unter Neu> Projekt die Option Visual C #> Windows-Desktop> Konsolenanwendung aus. Andernfalls funktionieren die Interop-Tools nicht.

Für den Fall, dass ich etwas vergessen habe, hier meine "using" -Anweisungen:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
1
bearacuda13

Hallo, ich hatte mit dieser Art von Problemen zu kämpfen, während ich Daten in Excel-Tabelle in C # exportierte. Ich hatte viele Methoden mit externen DLLs ausprobiert, aber dann etwas gefunden und implementiert, um die Verwendung von externen DLLs zu überwinden.

Sie müssen keine externe DLL für die Exportfunktionalität verwenden, um den Header und den Inhaltstyp der Antwort perfekt zu erhalten. 

hier ist ein Artikel, an dem ich mein Experiment beim Exportieren von Daten in Excel-Tabellen in asp.net geteilt habe. 

http://www.icodefor.net/2016/07/export-data-to-Excel-sheet-in-asp-dot-net-c-sharp.html

0
Tapan kumar