without Crea file Excel(.XLS e.XLSX) da C#




microsoft office interop excel create excel file c# (20)

È possibile creare file Excel ben formattati utilizzando questa libreria: http://officehelper.codeplex.com/documentation
Vedi sotto campione:

using (ExcelHelper helper = new ExcelHelper(TEMPLATE_FILE_NAME, GENERATED_FILE_NAME))
{
    helper.Direction = ExcelHelper.DirectionType.TOP_TO_DOWN;
    helper.CurrentSheetName = "Sheet1";
    helper.CurrentPosition = new CellRef("C3");

    //the template xlsx should contains the named range "header"; use the command "insert"/"name".
    helper.InsertRange("header");

    //the template xlsx should contains the named range "sample1";
    //inside this range you should have cells with these values:
    //<name> , <value> and <comment>, which will be replaced by the values from the getSample()
    CellRangeTemplate sample1 = helper.CreateCellRangeTemplate("sample1", new List<string> {"name", "value", "comment"}); 
    helper.InsertRange(sample1, getSample());

    //you could use here other named ranges to insert new cells and call InsertRange as many times you want, 
    //it will be copied one after another;
    //even you can change direction or the current cell/sheet before you insert

    //typically you put all your "template ranges" (the names) on the same sheet and then you just delete it
    helper.DeleteSheet("Sheet3");
}        

dove il campione assomiglia a questo:

private IEnumerable<List<object>> getSample()
{
    var random = new Random();

    for (int loop = 0; loop < 3000; loop++)
    {
        yield return new List<object> {"test", DateTime.Now.AddDays(random.NextDouble()*100 - 50), loop};
    }
}

https://code.i-harness.com

Come posso creare un foglio di calcolo Excel con C # senza che Excel debba essere installato sulla macchina su cui è in esecuzione il codice?



Alcune opzioni che ho usato:

Se XLSX è un must: ExcelPackage è un buon inizio ma si spegne quando lo sviluppatore smette di lavorare su di esso. ExML è stato prelevato da lì e aggiunto alcune funzionalità. ExML non è una cattiva opzione, lo sto ancora utilizzando in un paio di siti di produzione.

Per tutti i miei nuovi progetti, però, sto usando NPOI , la porta .NET di poi.apache.org . NPOI 2.0 (Alpha) supporta anche XLSX.


Alcuni fornitori di componenti di terze parti come Infragistics o Syncfusion offrono ottime capacità di esportazione Excel che non richiedono l'installazione di Microsoft Excel.

Poiché questi fornitori forniscono anche componenti avanzati della griglia dell'interfaccia utente, questi componenti sono particolarmente utili se si desidera lo stile e il layout di un'esportazione excel per simulare lo stato corrente di una griglia nell'interfaccia utente dell'applicazione.

Se la tua esportazione è destinata ad essere eseguita lato server con enfasi sui dati da esportare e senza alcun collegamento all'interfaccia utente, allora opterei per una delle opzioni open source gratuite (ad es. ExcelLibrary).

In precedenza sono stato coinvolto in progetti che tentavano di utilizzare l'automazione lato server nella suite Microsoft Office. Sulla base di questa esperienza, raccomanderei vivamente contro questo approccio.



Ecco un modo per farlo con LINQ to XML, completo di codice di esempio:

Importa ed esporta rapidamente dati Excel con LINQ in XML

È un po 'complesso, dal momento che devi importare i namespace e così via, ma ti permette di evitare dipendenze esterne.

(Inoltre, naturalmente, è VB .NET, non C #, ma puoi sempre isolare le cose di VB .NET nel proprio progetto per usare XML Literals e fare tutto il resto in C #.)



Hai mai provato lo sylk?

Generavamo gli excelsheet in classico asp come sylk e ora stiamo cercando anche un excelgenerater.

I vantaggi per sylk sono, è possibile formattare le celle.



Il modo più semplice e veloce per creare un file Excel da C # è utilizzare lo strumento di produttività Open XML. Open XML Productivity Tool viene fornito con l'installazione Open XML SDK. Lo strumento invertire ingegnerizza qualsiasi file di Excel nel codice C #. Il codice C # può quindi essere utilizzato per rigenerare quel file.

Una panoramica del processo coinvolto è:

  1. Installa Open XML SDK con lo strumento.
  2. Crea un file Excel utilizzando l'ultimo client Excel con l'aspetto desiderato. DesiredLook.xlsx .
  3. Con lo strumento apri DesiredLook.xlsx e fai clic sul pulsante Rifletti codice nella parte superiore.
  4. Il codice C # per il tuo file verrà generato nel riquadro destro dello strumento. Aggiungi questo alla tua soluzione C # e genera file con l'aspetto desiderato.

Come bonus, questo metodo funziona per qualsiasi file Word e PowerPoint. Come sviluppatore C #, apporterai le modifiche al codice in base alle tue esigenze.

Ho sviluppato una semplice app WPF su github che verrà eseguita su Windows per questo scopo. Esiste una classe segnaposto chiamata GeneratedClass cui è possibile incollare il codice generato. Se torni indietro di una versione del file, genererà un file excel come questo:


La soluzione commerciale, SpreadsheetGear per .NET, lo farà.

Puoi vedere esempi di ASP.NET (C # e VB) dal vivo here e scaricare here una versione di valutazione.

Disclaimer: Possiedo SpreadsheetGear LLC


Le varie librerie XML di Office 2003 disponibili funzionano abbastanza bene per i file Excel più piccoli. Tuttavia, trovo che la dimensione di una grande cartella di lavoro salvata nel formato XML sia un problema. Ad esempio, una cartella di lavoro con cui lavoro sarebbe di 40 MB nel nuovo formato XLSX (e sicuramente più compatto) diventa un file XML 360 MB.

Per quanto riguarda la mia ricerca, ci sono due pacchetti commerciali che consentono l'output nei vecchi formati di file binari. Loro sono:

Né sono economici (rispettivamente 500USD e 800USD). ma entrambi funzionano indipendentemente da Excel stesso.

Quello di cui sarei curioso è il modulo di output di Excel per OpenOffice.org. Mi chiedo se possano essere portati da Java a .Net.



Potresti dare un'occhiata a GemBox.Spreadsheet .

Hanno una versione gratuita con tutte le funzionalità, ma limitata a 150 righe per foglio e 5 fogli per cartella di lavoro, se ciò rientra nelle tue esigenze.

Non ho ancora avuto bisogno di usarlo da solo, ma sembra interessante.



Se sei soddisfatto del formato xlsx, prova il mio progetto GitHub codeplex . EPPlus . Iniziato con l'origine da ExcelPackage, ma oggi è una riscrittura totale. Supporta gamme, stile cellulare, grafici, forme, immagini, nomi, autofiltri e molte altre cose.



Un'opzione estremamente leggera potrebbe essere l'uso di tabelle HTML. Crea semplicemente tag head, body e table in un file e salvalo come file con estensione .xls. Esistono attributi specifici di Microsoft che è possibile utilizzare per definire l'output, incluse le formule.

Mi rendo conto che potresti non doverlo codificare in un'applicazione web, ma qui c'è un example della composizione di un file Excel tramite una tabella HTML. Questa tecnica potrebbe essere utilizzata se si stesse codificando un'app per console, un'applicazione desktop o un servizio.


IKVM + POI

Oppure puoi usare l'Interop ...


Syncfusion Essential XlsIO può farlo. Non ha dipendenza da Microsoft Office e ha anche un supporto specifico per piattaforme diverse.

Esempio di codice:

//Creates a new instance for ExcelEngine.
ExcelEngine excelEngine = new ExcelEngine();
//Loads or open an existing workbook through Open method of IWorkbooks
IWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);
//To-Do some manipulation|
//To-Do some manipulation
//Set the version of the workbook.
workbook.Version = ExcelVersion.Excel2013;
//Save the workbook in file system as xlsx format
workbook.SaveAs(outputFileName);

L'intera suite di controlli è disponibile gratuitamente tramite il programma di licenza della comunità , se si qualifica (meno di 1 milione di dollari in entrate). Nota: lavoro per Syncfusion.





file-io