2009-05-18 13 views
2
BOWorkerDetail oBOWorkerDetail = new BOWorkerDetail(); 
      WorkerDetails oWorkerDetails = new WorkerDetails(); 
      oWorkerDetails = oBOWorkerDetail.Gets(); 

oWorkerdetails ist eine Sammlung aller Arbeitnehmer. Ich muss diesen Wert in Excel speichern. wie macht man ? Kann jemand helfen? Ich arbeite an C# Fensterplattform vs05.Wie kann ich von C# nach Excel speichern?

Antwort

1

Meine Empfehlung ist es, eine native Bibliothek zu verwenden und Interop zu vermeiden. Werfen Sie einen Blick auf Aspose.Cells

2

sollten Sie sich diese http://www.connectionstrings.com/excel, dort können Sie einige Verbindungszeichenfolgen finden, die mit ODBC-Engine funktioniert. Ein Beispiel ist:

OdbcConnection connection = new OdbcConnection(@"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=" + xlsFilePath + "; ReadOnly=False; DefaultDir=" + xlsDir + ";"); 

(Sie sollten haben Microsoft Excel auf der Workstation installiert)

dann können Sie eine IDbCommand wie folgt erstellen: IDbCommand command = connection.CreateCommand();

Sie können diesen Befehl wie einen beliebigen SQL-Befehl verwenden: "CREATE TABLE", "INSET INTO" für jeden von DataRow in Ihrer DataTable.

Hope this helps ...

+0

Warum die unten Abstimmung? Das erscheint mir vollkommen vernünftig. Ich habe diese Serverseite benutzt und es funktioniert gut. – BarneyHDog

1

Wenn Sie Excel auf dem Rechner nicht installiert haben, den Code ausgeführt werden Sie können als XML oder CSV (Comma Separated Values) Datei exportieren und importieren dann, dass in Excel in einem späteren Zeitpunkt.

Wenn Sie XML verwenden Sie das Schema als auch exportieren.

Wie BarneyHDog in den Kommentaren weist darauf hin, kann Excel, um die Dinge zu Daten böse tun auf, was es den Datentyp denkt. Also, wenn Sie diese Route hinunter gehen, überprüfen Sie, ob Ihre Ausgabe korrekt gehandhabt wird. Hier

+0

CSV kann gut funktionieren, aber Sie müssen sich bewusst sein, dass Excel Dinge auf Daten basierend auf dem, was es den Datentyp denkt, böse machen kann. Ich habe Barcodes via CSV mehrmals importiert, nur um sie in wissenschaftlicher Notation zu zerlegen. – BarneyHDog

+0

Fairer Punkt - Ich werde der Antwort einen Vorbehalt hinzufügen – ChrisF

1

ist ein Beispiel für die Verwendung von Visual Studio-Tools für Office 2008 und Office Excel Interop eine Liste> neue Excel-Datei zu schreiben:

using System; 
using System.Collections.Generic; 
using System.Reflection; 

using Microsoft.Office.Interop.Excel; 

namespace Project1 
{ 
    public class ExportExcel 
    { 
    public void Export(string fileName, List<List<string>> data) 
    { 
     _Application excel = null; 
     _Workbook wb = null; 
     try 
     { 
     excel = new ApplicationClass { Visible = false }; // new excel application (not visible) 
     wb = excel.Workbooks.Add(Missing.Value); // new excel file 

     var sh = ((_Worksheet)wb.ActiveSheet); // current sheet 
     for (var i = 0; i < data.Count; i++) 
     { 
      var listMaster = data[i]; 
      for (var j = 0; j < listMaster.Count; j++) 
      { 
      sh.get_Range(sh.Cells[j + 1, i + 1], sh.Cells[j + 1, i + 1]).Value2 = listMaster[j]; 
      // get_Range(start, end) where start, end is in R1C1 notation 
      } 
     } 
     } 
     finally 
     { 
     if (wb != null) 
     { 
      wb.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
     } 
     if (excel != null) 
     { 
      excel.Quit(); 
     } 
     GC.Collect(); 
     } 
    } 
    } 
} 

VSTO Excel erfordert auf Client-Rechner installiert werden

0

Eine wirklich einfache Möglichkeit, dies zu tun, wird unter Verwendung der FileHelpers Bibliothek

http://filehelpers.sourceforge.net/

gibt es viele Beispiele dort.

Die Bibliothek ist wirklich zuverlässig, ich habe es viele Male verwendet habe. Hoffe, es hilft

Verwandte Themen