Domanda

Di recente sono stato incaricato di aggiornare un'app di raccolta dati VB6, per aggiungere la possibilità di generare report Excel e stamparli tramite l'app (entrambi devono essere eseguiti sullo stesso computer). Normalmente questo non sarebbe un problema, ho generato rapporti Excel con VB6 prima di utilizzare l'oggetto Excel.

Quindi sono andato avanti e ho codificato insieme le modifiche e le ho presentate, quindi mi è stato detto che la macchina su cui non verrà installato questo programma non avrà una copia completa di Excel su di essa e devo trovarne un'altra soluzione.

Ho provato a creare file delimitati (separati da virgola o testo), ma quando questi file vengono aperti con Excel non vengono formattati correttamente, ovvero se una cella ha 20 caratteri, metà dei caratteri verrà tagliata a causa della dimensione fissa della cella.

Ho un altro paio di idee:

1) So che openoffice ha un api. Questo API può essere utilizzato per generare un file Excel formattato correttamente? Esiste un oggetto COM che posso usare?

2) Ho trovato questo strumento: http://www.carlosag.net/Tools/ExcelXmlWriter / Tuttavia, è stato scritto in VB.NET. Posso ancora usare questo strumento in VB6?

Sono davvero perplesso e non so in quale direzione andare avanti. Qualcuno ha qualche idea riguardo agli utitili sopra? Inoltre, sono aperto anche ad altri suggerimenti / metodi migliori. Tutto ciò che mi aiuterebbe a compiere questo compito sarebbe apprezzato!

NOTA: la versione di Excel che verrà utilizzata per visualizzare questi report è Excel 2007

È stato utile?

Soluzione 10

Ho trovato una soluzione:

Ho trovato una DLL che può essere utilizzata per creare e stampare fogli di calcolo Excel. Penso che sia lo stesso del writer XML ma per VB6.

Altri suggerimenti

Diamo un'occhiata a questi due requisiti:

  

aggiungi la possibilità di generare report Excel e stamparli tramite l'app.

e

  

la macchina su cui non verrà installato questo programma [sic] non avrà una copia completa di Excel

A meno che non ti fraintenda, quelli sembrano escludersi a vicenda. Se intendi che genererai i rapporti su un solo computer e che verranno visualizzati e stampati altrove, potresti provare a utilizzare SpreadSheetML .

Fai attenzione quando cerchi su google informazioni aggiuntive su SpreadSheetML: c'è un lotto di disinformazione là fuori che confonde SpreadSheetML con il nuovo formato Xml utilizzato per Excel in Office 2007. SpreadSheetML funziona fino a OfficeXP, e anche in senso limitato in Office 2000.

È possibile salvare i file Excel come HTML. In un'app Web che ho scritto che era necessario esportare i dati come Excel, ho appena creato un file HTML come quello Excel Export. Poi l'ho servito come application / vnd.ms-excel. Excel lo apre bene. Probabilmente potresti fare qualcosa di simile.

Puoi anche trovare una libreria come quella che hai collegato che scrive direttamente il nuovo formato di file di Office poiché penso che siano derivati ??di XML.

Crea il file CSV come faresti normalmente.

Consenti all'app desktop di eseguire la formattazione sul computer in cui sono disponibili i file XLS, prima che venga stampata.

Se sei disposto a convivere con l'installazione del runtime .NET, puoi avvolgere la libreria nell'opzione # 2 con una classe .NET esposta a COM. La classe passa semplicemente chiamate a ExcelXMLwriter.

L'alternativa è studiare lo standard XML e scrivere il proprio autore, ma probabilmente è eccessivo per il progetto.

Per quanto riguarda OpenOffice dai un'occhiata qui . Soprattutto la sezione VBA di questa pagina qui . Sembra esserci un componente COM che puoi usare.

È possibile creare una cartella di lavoro di Excel su una macchina senza Excel installato ** utilizzando una connessione Jet - qualsiasi connessione Jet - per eseguire una query "make table" " SQL DML o CREATE TABLE DLL SQL in cui la tabella in questione è Excel, ad es. considera questo codice VBA:

Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat  

  ' Create a new Jet .mdb
  .Create _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & _
      Environ$("temp") & "\DropMe.mdb"
  ' Use .mdb's Jet connection to create an Excel table
  ' (will create a new workbook to contain it)
  .ActiveConnection.Execute _
     "CREATE TABLE" & _
     " [Excel 8.0;HDR=NO;Database=C:\db.xls;].[Sheet1]" & _
     " (col FLOAT);"
End With

Jet è un componente Windows deprecato che è sempre presente sui computer Windows pre-Vista e rimane un download gratuito da MS tramite MDAC.

Detto questo, " per stamparli attraverso l'app [Excel] " hai chiaramente bisogno dell'app Excel!

** Penso che sia possibile: non riesco a trovare una macchina senza Excel su cui testare!

Controlla questo: http://support.microsoft.com/default.aspx? SCID = kb; en-us; Q271572

Fai lo stesso e salva invece il file con estensione .xls.

In alternativa, puoi creare il contenuto della tabella HTML e scriverlo in un file, con estensione xls.

La creazione di un file SpreadsheetML da VB6 dovrebbe essere molto semplice È solo un file di testo contenente un particolare sapore di xml. Credo che puoi ottenere tutti i documenti per SpreadsheetML e WordML da MSDN.

Attualmente produco circa 60 diversi report personalizzati da un'applicazione vb.net utilizzando SpreadsheetML. C'è almeno un potenziale problema a causa delle modifiche alle estensioni dei file e alla sicurezza dei documenti implementate in Excel 2007. Se generi un file Excel basato su SpreadsheetML e usi l'estensione .xls, si aprirà bene nel 2003. Excel 2007 farà apparire un finestra di dialogo che informa che l'estensione del file non corrisponde al contenuto del file. Si aprirà e visualizzerà il file correttamente dopo la finestra di avviso. Se si modifica l'estensione nel documento SpreadsheetML in .xml, Excel 2007 lo aprirà senza alcun reclamo. Tuttavia, i tuoi fogli di calcolo basati su XML possono essere aperti in Internet Explorer su macchine che eseguono Excel 2003.

Uso NPOI Non utilizza la libreria di Excel e fornisce output in formato Excel 2003

Anche io andrei con l'opzione CSV. Non richiede DLL o altro tipo di oggetto. Un avvertimento è di essere MOLTO attenti alla formattazione utilizzata dai numeri, poiché un valore di 1.024,00 creerebbe due colonne e renderà flessibile l'intera cartella di lavoro. sarebbe formattato come qualcosa come Format (Numberfield, " #########. # 0 ")

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