2009-09-02 18 views
29

Sono confuso da morire con tutti i modi di leggere/scrivere/creare file Excel. VSTO, OLEDB, ecc., Ma sono tutti sembrano per avere il requisito che l'ufficio deve essere installato.Come posso creare, leggere, scrivere un excel a livello di codice senza aver installato l'ufficio?

Ecco la mia situazione: ho bisogno di sviluppare un'applicazione che prenderà un file excel come input, fare alcuni calcoli e creare un nuovo file excel che sarà fondamentalmente una modifica del primo file excel. Il tutto con il vincolo che la macchina che esegue ciò potrebbe non avere installato Office. (Non chiedere perché ...)

Devo supportare tutti i formati excel. L'unica cosa che risparmia è che i fogli di calcolo dei formati stessi sono davvero semplici. Solo un mucchio di colonne e valori, niente di speciale. E sfortunatamente nessun CSV in quanto l'utente finale potrebbe non sapere nemmeno cos'è un file CSV.

+0

Quali versioni devi supportare? –

+0

Dipende dalle funzionalità di MS Excel necessarie. Hai bisogno di qualche elemento di fantasia? – voyager

+3

Quanto è necessario essere tolleranti per "funzionalità perse". Es. Avete bisogno di mantenere le formule, tabelle pivot, grafici, ecc? O sono solo dati in questi file? –

risposta

47

Scrivi l'excel in formato tabella HTML:

<html> 
<body> 
    <table> 
    <tr> 
    <td style="background-color:#acc3ff">Cell1</td> 
    <td style="font-weight:bold">Cell2</td> 
    </tr> 
    </table> 
</body> 
</html> 

e dare il vostro file di estensione xls. Excel lo convertirà automaticamente

+22

mi stai prendendo per il culo. – eviljack

+3

Ho usato questo metodo più volte, semplice, funziona alla grande. Ma nel caso di applicazioni web, basta impostare il tipo di contenuto/tipo mime per eccellere (non ricordo il tipo esatto Mime dalla testa) –

+1

E, a seconda della versione di Excel, di solito preleva anche la formattazione. Cella di tavolo in grassetto? Excel lo porta sopra .. Colore di sfondo? copia anche quello ... –

6

invece di leggere e scrivere file CSV. Excel li legge bene e sono più facili da usare. Se hai bisogno di lavorare contro i file .xls, prova ad avere il supporto per OpenOffice e Excel. OpenOffice può leggere e scrivere file excel.

+1

L'API di OpenOffice può essere molto utile qui: http://api.openoffice.org/ –

+2

Il problema qui è 0 formattazione. –

8

Senza Office installato, è necessario qualcosa progettato per comprendere il formato di file binario di Excel (a meno che non si desideri aprire solo file .xlsx di Office 2007).

Il migliore che ho trovato (e che uso) è SpreadsheetGear, che oltre ad essere nativo .NET, è molto più veloce e più stabile delle soluzioni COM/OLE (che ho usato in passato)

0

I file di Excel sono in un formato proprietario quindi (afaik) non si sarà in grado di farlo senza che l'ufficio sia disponibile. Esistono alcuni strumenti di terze parti (che presumibilmente autorizzano il formato di MS?) Ma non li ho usati io stesso per commentare la loro utilità.

Suppongo che non sia possibile controllare il formato di file di base, ovvero semplici formati CSV o XML non saranno possibili?

0

Ho usato una libreria molto bella denominata CarlosAg, che utilizza il formato XML di Excel. È stato fantastico (e Excel riconosce il formato) e anche incredibilmente veloce. Dai un'occhiata allo here.

Oh, come nota a margine, lo usavamo per lo stesso motivo per cui ne avete bisogno. I server che hanno generato questi file non sono stati in grado di installare Excel.

0

Se non è possibile lavorare con i file CSV secondo il suggerimento di @RHicke e presupponendo che si stia lavorando su un'app Web, poiché un'app desktop dovrebbe avere XL installato come da requisiti.

direi, creare la vostra applicazione di elaborazione come webservice, e costruire un XL Addin che interagire con il webservice direttamente da XL.

2

Hai considerato il modo in cui il numero è il numero e uno: utilizzando lo Open XML SDK? Puoi conservare gli stili e modificarli a tuo piacimento. Tutto ciò che puoi fare in un file reale è possibile ottenere in modo programmatico.L'SDK viene fornito con uno strumento chiamato Document Reflector che mostra l'XML sottostante e mostra persino le istruzioni LINQ che possono essere utilizzate per generarle. Questa è la chiave per giocarci, vedere come vengono apportate le modifiche, quindi ricrearle nel codice.

L'unica avvertenza è che funzionerà con i nuovi formati basati su XML (* .xlsx) e non con le versioni precedenti. C'è una leggera curva di apprendimento, ma più materiale si sta facendo strada su blog e altri siti.

1

Excel XLSX file "solo" file XML - più precisamente file ZIP contenenti diversi file XML. Basta rinominare un file Excel Test.xslx a Test.zip e aprirlo con il programma ZIP preferito. Gli schemi XML sono, afaik, standardizzati e disponibili. Ma penso che potrebbe non essere così facile manipolarli usando solo strumenti e framework di priming XML.

1

Se il costo non è un problema, suggerirei di cercare nel prodotto Excel di Aspose. Uso il loro prodotto Word e sono soddisfatto.

Aspose.Cells

+2

Dopo aver provato alcune delle alternative gratuite, il mio team ha deciso di utilizzare anche Aspose.Cells. È molto intuitivo da usare e il codice è facile da mantenere. – dawntrader

0

posso capire l'esigenza di non avere installato su una macchina server dell'ufficio. Ci sono molte librerie come la disponibilità di aspose, alcune però richiedono una licenza. Se si stanno utilizzando i formati MS Excel, è disponibile una libreria nativa di interoperabilità, il fornitore di dati OLEDB ACE, che è possibile installare su una macchina e iniziare a leggere, scrivendo a livello di codice. È necessario definire una stringa di connessione e comandi secondo le proprie necessità. (Ref: This article @yoursandmyideas) parla dell'utilizzo di questa libreria insieme alle informazioni di configurazione e risoluzione dei problemi.

Problemi correlati