Come posso leggere i file di MS Office in un server senza installare MS Office e senza usare la libreria Interop?

StackOverflow https://stackoverflow.com/questions/153079

Domanda

La libreria di interoperabilità è lenta e richiede l'installazione di MS Office. Molte volte non si desidera installare MS Office sui server.

Mi piacerebbe usare POI di Apache , ma sono su .NET.

Devo solo estrarre la parte di testo dei file, non creare né "memorizzare informazioni" nei file di Office.

Devo dirti che ho una libreria di documenti molto grande e non posso convertirla in file XML più recenti.

Non voglio scrivere un parser per i file binari. Una libreria come Apache POI fa questo per noi. Sfortunatamente, è solo per la piattaforma Java. Forse dovrei considerare di scrivere questa applicazione in Java.

Non trovo ancora un'alternativa open source al POI in .NET, penso che scriverò la mia applicazione in Java.

È stato utile?

Soluzione

Per tutte le versioni di MS Office:

Per il nuovo Office (2007):

Per il vecchio Office (prima del 2007):

Altri suggerimenti

Scopri i Aspose component . Sono progettati per imitare la funzionalità di interoperabilità senza richiedere un'installazione completa di Office su un server.

Poiché i nuovi formati docx sono file intrinsecamente basati su XML, è possibile crearli e manipolarli a livello di programmazione con tecniche DOM XML standard, una volta che si conosce la struttura.

I file sono fondamentalmente archivi zip con un'estensione di file alternativa. Utilizzare lo spazio dei nomi System.IO.Packaging per accedere agli elementi interni del file, quindi aprirli in un XmlDocument per eseguire la manipolazione.

Ci sono esempi disponibili per fare questo, e il progetto Office Open XML su SourceForge potrebbe valere la pena cercare ispirazione.

Per quanto riguarda i vecchi formati binari, questi erano proprietari di MS e l'unico modo per ottenere il contenuto dall'interno è attraverso il modello a oggetti di Office (richiede un'installazione di Office) o un convertitore di file di terze parti / parser.

Sfortunatamente non c'è nulla di originale e nativo nella piattaforma .NET per lavorare con questi file.

Cosa devi fare con questi file? Se vuoi solo trasmetterli in streaming all'utente, i flussi di file di base vanno bene. Se si desidera creare nuovi file (magari basati su un modello) da inviare all'utente che l'utente può aprire in Office, esiste una varietà o work-around .

Se in realtà stai conservando i dati nei documenti di Office per l'utilizzo da parte del tuo sito web, stai sbagliando. I documenti di Office, anche i fogli di calcolo Excel e i database di accesso, non sono in realtà una scelta appropriata da utilizzare con un sito Web interattivo.

Se il documento è in formato Word 2007, è possibile utilizzare la libreria system.io.packaging per interagire con esso in modo programmatico.

RWendi

Nel mondo Java, esiste anche JExcelApi . È molto chiaramente scritto, da quello che ho potuto vedere, molto più pulito del POI. Quindi forse anche una porta di quel codice su .NET non è fuori discussione, a seconda del fatto che hai abbastanza tempo a disposizione.

OpenOffice.

Puoi programmare contro di esso e farlo fare molto per te, senza spendere i soldi in una licenza per il server o avere la vulnerabilità ad esso associata sul tuo server.

Le cartelle di lavoro di Microsoft Excel possono essere lette usando un driver ODBC (o è un driver OLE DB? non ricordi) che fa sembrare la cartella di lavoro una tabella di database. Ma non so se quel driver sia disponibile senza la stessa Office Suite.

Puoi usare OpenOffice. Ha uno strumento di conversione da riga di comando:

How to di conversione

In breve, si definisce una macro in OpenOffice e la si chiama con una riga di comando argomento di OpenOffice. In quell'argomento il nome del file locale (il file di Office) è codificato.

Non è un grande sollution, ma dovrebbe essere praticabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top