VS2005 - Scrivere su file excel

lunedì 31 marzo 2008 - 09.37

gdlcore Profilo | Junior Member

Ciao a tutti..
spero mi possiate aiutare.
Ho un form da completare con l'anagrafica dell'azienda,io vorrei che queste informazioni dopo essere state inserite,attraverso un bottone (Salva), si possano trasferire nelle celle di un foglio excel. Qual'è il codice per scrivere su un foglio excel?
Come faccio?
Aspetto qualche aiuto, grazie..

freeteo Profilo | Guru

ciao,
puoi usare un codice semplice se non ti servono formattazioni sulle celle, ovvero scrivere un file "csv" (comma separated values).
Praticamente è un file di testo normalissimo, dove ogni campo è delimitato da ";" e ogni riga "\r\n" (ovvero ogni riga del file csv).

Se non ha grose pretese, potrebbe bastarti questo tipo di file

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

gdlcore Profilo | Junior Member

Il problema che il file excel è uno già esistente,non devo crearne uno nuovo..è complicato farlo su quel file che è xls?Magari in quel file fare un nuovo foglio chiamato "Anagrafica Azienda" e all'interno si troveranno i campi che ho inserito nelle text box del form..si può fare?Non so il codice per scrivere sull'excel prelevando i dati dalle text box..
Aspetto vostra risposta grazie mille!

Non mi risponde nessuno?Aiutatemi per favore...

Lucifel Profilo | Junior Member

il codice che ti riporto dipende dalla versione di excel che hai installato. Io ho office 2003 in italiano e dipende al dal fatto se hai installato i PIA sul tuo office. Fatto ciò il codice è il seguente:

Imports Excel = Microsoft.Office.Interop.Excel Dim path As String = "c:/file.xls" ' Path dove si trova il tuo file Dim xlApp As Excel.Application ' Riferimento all'applicazione Excel Dim xlBook As Excel.Workbook ' Riferimento al Workbook Dim xlSheet As Excel.Worksheet ' Riferimento al Worksheet Try ' Crei un'oggetto Applicazione Excel, assegnandola alla variabile che la identifica: xlApp = CreateObject("Excel.Application") ' Ai riferimenti del workbook il il File Excel che vuoi aprire xlBook = xlApp.Workbooks.Open(path) xlBook = xlApp.Workbooks.Open(path) ' Apro il file ' Definisci il foglio di lavoro xlSheet = xlBook.Worksheets(1) xlSheet.Activate() ' Attiva il foglio di lavoro ' Completo il foglio excel xlSheet.Cells(1, 1).Value = Me.TextBox1.Text xlSheet.Cells(2, 2).Value = Me.TextBox2.Text xlSheet.Cells(3, 3).Value = Me.TextBox3.Text ' ... .... Catch ex As Exception MessageBox.Show(ex.Message) Finally ' Poi al momento di chiudere: xlBook.Close(True) ' Chiudi il foglio di lavoro salvando (true) o non salvando (False) xlApp.Quit() ' Chiudi l'applicazione excel ' Annienta le variabili utilizzate. xlSheet = Nothing xlBook = Nothing xlApp = Nothing End Try

Spero ti sia servito


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Grazie per la risposta!

Ti vorrei chiedere un altra cosa,come faccio ad inserire un controllo su una textbox se voglio che si inserisca solamente un campo numerico (Numero di telefono), in pratica devo impedire di mettere lettere, magari visualizzando un messaggio appena dopo aver digitato una parola in lettere.. grazie mille aspetto tua risposta!

Lucifel Profilo | Junior Member

Avevo anche io questo problema...

Hai 2 soluzioni:

1) o impedisci all'utente di inserire lettere (quella che ho usato io)
2) o trovi l'evento della textbox (perso focuslost) e fai il controllo... quindi dovresti scorrere il testo e vedere se è un numero...


io preferisco la prima soluzione...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Io però dovevo avere un floating quindi dovevo permettere anche numero del genere: 1.4 ecc ecc

Basta che sulla funzione "control" tu tolga il punto

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Cavolo grazie mille!!Sei tr bravo..spero che se scriverò altri post su problemi che mi trovo davanti riesci ad aiutarmi..ne avrei tanti di problemi anche ora ma sarebbe lungo per te spiegarmeli,per ora mi impegno di logica..
Grazie ancora,se ti devo chiedere ancora qualcosa posto qui o devo aprirne un altro?

Lucifel Profilo | Junior Member

Sei fortunato che sono problemi che ho dovuto affrontare prima di te... altrimenti non avrei saputo come aiutarti

Se apri qua sai che mi arriva una mail, altrimenti se apri un nuovo thread devo avere il tempo di girare sul forum...

Come preferisci


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Ciao,
ecco un altro problema,ma perchè ogni tanto mi rimane il processo excel.exe attivo, per questo motivo ho poi problemi dopo ad eseguire il mio applicativo. Come faccio a non farlo rimanere attivo? Grazie mille! Aspetto tua risposta..

Lucifel Profilo | Junior Member

Il processo excel attivo???
Ma è SEMPRE attivo o solo qualche volta. Se sono qualche volta guarda quali sono i motivi per cui resta attivo.
Hai il file excel aperto quando lanci l'applicazione? Perché l'applicazione è come se fosse un altro utente che vuole aprire il file (che in questo caso diventa un file condiviso)... e comunque alla fine devi fare "close" nell'applicazione


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Ora ho capito..se mentre è in esecuzione mi da un errore qualsiasi, allora rimane aperto il processo..
Vabbe non è un problema, farò di tutto per avere meno errori.. :-) diventerò un genio!
Ora ho questo problema, se voglio aggiungere un cliente nella tabella "Clienti" del mio foglio Excel come faccio ad aggiungerlo in append, nell'ultimo spazio libero..

Lucifel Profilo | Junior Member

Non puoi aggiungerlo in append...devi trovarti la cella dove scrivere il valore

Se sai da dove sei partito (cella 1 ad esempio) e sai quanti sono i clienti (sono 10)
l'undicesimo cliente verrà inserito nella cella 11...

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Ok grazie anche per questa risposta.
Facendo un salto indietro, nel campo numerico del numero telefonico vorrei che si accettassero anche i caratteri : " / " and " - " . E anche che la partita IVA sia di 11 caratteri, ed è possibile farlo inserire automaticamente in caratteri maiuscoli?
Cosa aggiungo al codice di prima?Grazie mille!

Per i due caratteri / e - ho trovato la soluzione,erano i numeri della tabella ascii.
Ho il problema della partita IVA e dei caratteri maiuscoli.
Grazie!

Lucifel Profilo | Junior Member

>Ok grazie anche per questa risposta.
>Facendo un salto indietro, nel campo numerico del numero telefonico
>vorrei che si accettassero anche i caratteri : " / " and "
>- " .

Sul codice devi travare il codice ascii dei caratteri "/" e "-". Ora io non ho idea di quali siano. Ti cerchi in internet una tabella di codici ascii e te li trovi e li inserisci.
Se ho capito bene tu voi inserire un numero di telefono ad esempio
011/11111111
oppure
011-11111111
Il problema tuo è che se permetti l'inserimento dei caratteri / e - allora devi fare anche il controllo che questi caratteri siano presenti 1 sola volta e che non siano presenti al primo posto...
Perché io ti potrei inserire un testo del genere: ---0///11 che non mi sembra proprio un numero di telefono... e se anche facessi i controlli che ti ho suggerito avresti il problema che io ti potrei inserire un numero 0/1-1111111

Fossi in te lascierei un numero di telefono intero... tuttal'più permetti l'inserimento dello spazio... quindi ti verrebbe un numero del genere:
011 111 111 1
Che mi sembra anche più elegante

> E anche che la partita IVA sia di 11 caratteri, ed è possibile
>farlo inserire automaticamente in caratteri maiuscoli?

Questo è semplice:
Sulle proprietà del textbox ce ne sono 2 che sono utili al tuo caso:
CharacterCasing x i caratteri maiuscoli (se inserisci UPPER)
MaxLength x il massimo numero di caratteri da inserire (se inserisci 11 non ti permette di inserire oltre)


>Cosa aggiungo al codice di prima?Grazie mille!

Auguri


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Buongiorno,
ho un problemino ma credo che non sia difficile per te risolverlo..vorrei che quando vado a modificare il testo di una txtbox mi cambi il font oppure che si ingrandisca il font o che cambi colore..cose cosi,ho provato ma non riesco proprio..aspetto tua risposta,grazie mille!

Lucifel Profilo | Junior Member

Non ho capito

Vuoi che mentre tu modifichi il testo di una texbox ti cambi il font di tutta la texbox o solo del testo che tu stai modificando?

Xke se è la prima credo che basti che tu quando dai il focus al textbox gli cambi il font, x la seconda credo non si possa fare... almeno x quanto ne so io


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

gdlcore Profilo | Junior Member

Si intendevo la prima soluzione..cosa vuol dire dare il focus alla textbox?

Comunque in qualche modo ce l'ho fatta..ti volevo chiedere se era possibile che succeda la stessa cosa in due eventi diversi. Ad esempio:
voglio che il font cambia sia se ci vado sopra con il mouse sia quando ci arrivo nella textbox tramite il Tab. In pratica vorrei lo stesso codice nei due stessi eventi: MouseUp e TabIndexChanged. Però non voglio fare copia e incolla continuamente..c'è una soluzione?
Grazie..

Lucifel Profilo | Junior Member

>Si intendevo la prima soluzione..cosa vuol dire dare il focus
>alla textbox?
>
>Comunque in qualche modo ce l'ho fatta..ti volevo chiedere se
>era possibile che succeda la stessa cosa in due eventi diversi.
>Ad esempio:
>voglio che il font cambia sia se ci vado sopra con il mouse sia
>quando ci arrivo nella textbox tramite il Tab. In pratica vorrei
>lo stesso codice nei due stessi eventi: MouseUp e TabIndexChanged.
>Però non voglio fare copia e incolla continuamente..c'è una soluzione?
>Grazie..

Con l'evento focus ti risolvi tutti i problemi... In pratica quando dai il focus (rendi attivo un oggetto)
Quando fai mouseup (e quindi fai click sopra) e il cursore inizia a lampeggiare sul texbox dai il focus all'oggetto e la stessa cosa succede anche quando fai il tabindexchanged...

vedi tu...


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5