Come posso impostare la colonna di Excel e tipi di formattazione?

Sto esportando i dati da un CxDBGrid in un file Excel.
Io sono in grado di creare il file e copiare i dati in esso, ma sto avendo seri problemi con la formattazione della colonna. Dal momento che sto tirando i dati da un DB vorrei che il foglio di calcolo per riflettere il tipo: NUMERO, VARCHAR2,DATA e così via.
Io visivamente creato una macro, è andato a cercare il codice VBA, e replicato nel progetto Delphi:

sheet.Columns[K+2].NumberFormat := '0,000'; //Number
sheet.Columns[K+2].NumberFormat := '@'; //Text
sheet.Columns[K+2].NumberFormat := 'm/d/yyyy'; //Date

Numero di formattazione funziona bene la maggior parte delle volte, ma gli altri due non.
Quando ho aperto il file generato, le colonne di testo mostra come tipo “Custom” e ogni cella viene visualizzato “-64”. Se vado a modificare una cella, il valore corretto è in realtà lì.
La data è un altro problema: il DB è formato dd/mm/yyyy e se I mangimi per Excel, diventa tutto incasinato. Ho provato impostando il formato corretto, ma poi non viene riconosciuto.

Eventuali indizi?

Sto impostando anche la larghezza della colonna. Che funziona perfettamente.

Presumo che quando si dice cxDbGrid si fa riferimento al Developer Express componenti. Se è così, stai esportazione in Excel utilizzando il ExportGridToExcel() procedure previste dall’Developer Express?
Ho provato ma non ha problemi con l’impostazione del tipo di dati. È per questo che voglio fare le cose a mano
Io uso ExportGridToExcel() di un numero di posti senza problemi legati ai tipi di dati o la formattazione di esportazione. Senza vedere il codice è difficile capire perché non ha funzionato per voi. Piuttosto che fare la fatica di scrivere le proprie esportazioni, vorrei chiedere la Developer Express, sito di supporto se può aiutarti. Il loro supporto è grande e di solito si può aiutare con una soluzione abbastanza rapidamente.

OriginaleL’autore asg2012 | 2012-08-17

2 Replies
  1. 4

    Il problema è che i valori assegnati sono stringhe Unicode. Prova questo:

    sheet.Columns[K+2].NumberFormat := AnsiChar('@');
    sheet.Columns[K+2].NumberFormat := AnsiString('m/d/yyyy');

    OriginaleL’autore andreas

  2. 3

    Non hai detto “come si fanno le cose a mano”, il che significa che le persone sono completamente indovinare quello che stai facendo. Quindi, ecco la mia ipotesi:

    1. Se presumo che tu stia usando la Express componente Foglio di calcolo da Developer Express
      Ho estensive esperienza con questo componente. Non supporta arbitrario formati numerici. Sostiene un “denaro” formato (0.00) con esattamente due cifre decimali. Non supporta tre o uno, o qualsiasi altro numero di cifre decimali.
      Se è così, questo è noto da-problema di progettazione nell’Esprimere il foglio di calcolo.

    2. Se manualmente si intende che il “foglio” come si mostra sopra è un oggetto OLE e la comunicazione tramite l’Automazione di Excel stesso, allora si dovrebbe essere formattazione di CELLE singolarmente o come un intervallo, e non oggetti della colonna. Io non sono sicuro di come colonna oggetto formati avrebbe mai ignorare i valori di cella, se lo fanno a tutti. La formattazione delle celle è generalmente una cella per cella materia, e devono essere trattati come tali.

    3. Se si vuole veramente questo per funzionare correttamente non uso Excel tramite l’automazione, si otterrà una corretta Excel XLS in grado di scrivere libreria. Ero abbastanza sicuro che si potrebbe ottenere i giusti risultati direttamente dal CX (DevEx) griglia db, ma vorrei chiedere sul loro forum, non qui. Con una normale Griglia DB, mi basta usare TJvDBGridExcelExport che arriva il Jedi JVCL, e che funziona con la normale VCL Griglia DB.

    OriginaleL’autore Warren P

Lascia un commento