57 Stimmen

Gibt es eine einfache Möglichkeit, eine .xls-Datei in eine .csv-Datei zu konvertieren? (Excel)

Gibt es eine einfache Möglichkeit, eine .xls-Datei in eine .csv-Datei zu konvertieren? (Excel)

in C#-Code?

Ich möchte eine bestehende .xls-Datei in eine .csv-Datei umwandeln.

Vielen Dank im Voraus

3voto

datchung Punkte 2340

Dies ist eine Abwandlung der Antwort von nate_weldon mit ein paar Verbesserungen:

  • Robustere Freigabe von Excel-Objekten
  • Satz application.DisplayAlerts = false; bevor Sie versuchen zu speichern, um die Eingabeaufforderungen auszublenden

Beachten Sie auch, dass die application.Workbooks.Open y ws.SaveAs Methoden erwarten sourceFilePath y targetFilePath vollständige Pfade zu sein (d.h. Verzeichnispfad + Dateiname)

private static void SaveAs(string sourceFilePath, string targetFilePath)
{
    Application application = null;
    Workbook wb = null;
    Worksheet ws = null;

    try
    {
        application = new Application();
        application.DisplayAlerts = false;
        wb = application.Workbooks.Open(sourceFilePath);
        ws = (Worksheet)wb.Sheets[1];
        ws.SaveAs(targetFilePath, XlFileFormat.xlCSV);
    }
    catch (Exception e)
    {
        // Handle exception
    }
    finally
    {
        if (application != null) application.Quit();
        if (ws != null) Marshal.ReleaseComObject(ws);
        if (wb != null) Marshal.ReleaseComObject(wb);
        if (application != null) Marshal.ReleaseComObject(application);
    }
}

2voto

Erica B. Punkte 31

Ich integriere die Antwort von @mattmc3. Wenn Sie eine xlsx Datei sollten Sie diese Verbindungszeichenfolge verwenden ( die von Matt angegebene Zeichenfolge funktioniert für xls-Formate, nicht für xlsx ):

var cnnStr = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO\"", excelFilePath);

1voto

DigDug Punkte 13

Ich hatte ein ähnliches Aufgabenproblem. Konvertieren Sie eingehende Transaktionen wie xlsx in tabulatorgetrennte Daten zur automatischen Verarbeitung durch ein bestehendes System. Es muss unbeaufsichtigt laufen. Nachdem ich mir viele Lösungen auf verschiedenen Websites angeschaut und zwei davon ausprobiert hatte, nämlich MS Office Excel für C#, wie oben beschrieben, stieß ich auf Probleme mit verschiedenen Versionen von MS Office und möglicherweise älteren Versionen auf dem PC, die ich nicht kontrollieren konnte. Am Ende entschied ich mich für... Aspose.Cells über NuGet. Die Lösung besteht aus vier Zeilen Code.

string soureFilePath = "my/source/path/file.xlsx";
string targetFilePath = "my/output/path/file.txt"; 
var book = new Workbook(soureFilePath);
book.Save(targetFilePath, SaveFormat.Tsv);

Es konvertiert nur Blatt 1 und ignoriert die Blätter 2 und 3, aber das ist für meine Zwecke in Ordnung. Ich vermute, dass es eine Funktion hat, um bei Bedarf alle Blätter zu konvertieren, aber das brauchte ich nicht, also habe ich es mir nicht angesehen.

Ihre Website für den Fall, dass jemand die Informationen oder die Lizenzvereinbarung einsehen möchte (kostenlose Nutzung).

Tabellenkalkulationen einfach manipulieren | Aspose.Cells Universal Library https://products.aspose.com/cells

Hinweis: Ich arbeite nicht für Aspose, ich bin nicht mit Aspose verbunden und ich profitiere in keiner Weise von diesem Beitrag.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X