Newsgroup: it.comp.lang.visual-basic
Titolo: MSHFlexGrid to Excel

Salve a tutti,
premetto che sono un newbie assoluto di VB...
Ho un problema che ora vi vorrei esporre:
Devo mettere mano a un programma funzionante per aggiungere
un paio di funzionalità, ma è MOLTO meglio se non tocco
la parte già fatta, per questioni relative alla possibilità pratica
di fare debug su questo lavoro.
Il mio problema è che ho una MSHFlexGrid che il programma
già riempie con dei dati e devo aggiungere una funzione che
esporti il contenuto della MSHFlexGrid in un file leggibile
da Excel.
Come posso fare?
Grazie anticipatamente per i suggerimenti.
P.S.
Dimenticavo, si tratta di VB6...
-- 
Gerolamo

 da Excel. Come posso fare?
Esportalo in formato CSV. Ti limiti ad aggiungere un pulsante
(o una voce di menu) che richiama una routine che si limita
a leggere i dati della flexgrid (che tu non tocchi) e a scriverli
in un file.
Il formato del file è semplicissimo: la prima riga, di solito, è
il nome dei campi, in questo caso le intestazioni di ogni colonna;
Nelle righe seguenti, vanno messi i contenuti, riga per riga,
di ogni campo, racchiusi per sicurezza tra virgolette e separati
da virgole. Così:
"NomePrimaColonna","NomeSecondaColonna","NomeTerzaColonna"
"ValoreDato1","ValoreDato2","ValoreDato3"
"ValoreDato1","ValoreDato2","ValoreDato3"
"ValoreDato1","ValoreDato2","ValoreDato3"
...eccetera.
Ho buttato giù una Sub al volo, che dovrebbe (sembra :-) )
funzionare, anche se non ha nè controllo di errori nè nient'altro.
Ah, accertati che nel testo contenuto nella griglia non ci possano
essere virgolette, altrimenti bisogna fare qualche modifica.
***********************
Sub EsportaCSV(Griglia As MSFlexGrid, NomeDiFile As String)
Dim Colonna As Long
Dim Riga As Long
Dim RigaDiTesto As String
Dim UltimaRiga As Long
Dim UltimaColonna As Long
Dim FileLibero As Integer
FileLibero = FreeFile
Open NomeDiFile For Output As FileLibero
With Griglia
      UltimaRiga = Griglia.Rows - 1
      UltimaColonna = Griglia.Cols - 1
      For Riga = 0 To UltimaRiga
            For Colonna = 0 To UltimaColonna
                  RigaDiTesto = RigaDiTesto & Chr$(34) & Griglia.TextMatrix(Riga, Colonna) & Chr$(34)
                  If Colonna <> UltimaColonna Then RigaDiTesto = RigaDiTesto & ","
            Next Colonna
            Print #FileLibero, RigaDiTesto
            RigaDiTesto = ""
      Next Riga
End With
Close FileLibero
End Sub
**********************
Ovviamente la richiami con:
EsportaCSV NomeDellaTuaGriglia, NomeDelFileDaSalvare
Bye, G.

 Esportalo in formato CSV.
Innanzitutto ti ringrazio per la risposta.
Mi vengono 2 dubbi, però:
1- Esportando in CVS non è possibile impostare l'impaginazione
del foglio Excel (in realtà mi interesserebbe solo la larghezza di
alcune colonne), giusto?
2- Il separatore non è detto che sia la ','
Dipende da cosa c'è nelle impostazionei di Windows...
Per esempio, per le impostazioni italiane, quello di default è il ';'
Come faccio a mettere il separatore giusto, a seconda del computer
su cui viene utilizzato il programma?
Altra cosa che mi viene in mente al volo:
Non esiste un componente col quale sostituire in maniera indolore
il MSHFlexGrid e che aggiunga come funzionalità l'esportazione
in formato Excel?
Il problema è che non sono sicuro di poter fornire un .cvs
E' possibile che mi chiedano proprio un file .xls e a quel punto
non saprei che fare
Ancora grazie
--
Gerolamo

Gerolamo wrote:
[cut]
Ho scritto più volte CVS, ma ovviamente intendevo CSV...
Scusate la distrazione, sarà l'influenza... o quegli strani esserini
gialli e verdi che saltellano qui intorno e mi fanno il solletico...
mah...
--
Gerolamo

 non saprei che fare
Stavo scrivendo che non mi risultava fosse possibile scrivere
un file Excel senza Excel, o un altro programma che comprendesse
il formato, poi mi è venuto un dubbio e ho cercato un po'...
Ho dato un'occhita su Wotsit (
http://www.wotsit.org9
 per vedere
il formato, e ho trovato un riferimento ad una classe apposita
per VB, questa dovrebbe essere la versione più aggiornata:
http://www.planet-source-code.com/xq/ASP/txtCodeId.11898/lngWId.1/qx/vb/scripts/ShowCode.htm
Excel Class - write to an XLS file without DLL's or Excel automation
By: Paul Squires
Writes an Excel BIFF 2.1 spreadsheet file DIRECTLY. No external
DLL's or Excel automation needed. Great for exporting data from
your application to an Excel spreadsheet...
Bye, G.

 Excel Class - write to an XLS file without DLL's or Excel automation
Ce n'è anche un'altra:
http://www.planet-source-code.com/xq/ASP/txtCodeId.22638/lngWId.1/qx/vb/scripts/ShowCode.htm
Bye, G.

 your application to an Excel spreadsheet...
Grandioso!
Scaricata e provata: era esattamente ciň che mi serviva!
Ti ringrazio tantissimo!
--
Gerolamo