Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Caricamento dati da excel a sql server
mercoledì 12 gennaio 2005 - 14.52
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
mer 12 gen 2005 - 14:52
salve,
penso sia un probvlema gia affrontato, in pratica devo leggere i dati di un floppy con un file di excel e caricarli con una procedura batch o altro su un database sql server posto in remoto, questo si deve poter fare ovviamente senza pacchetti dts, quindi sulla macchina del cliente non c'è office ne tantomenno enterprise manager, la si dovrebe poter fare o richiamare l'applicazione dirrettamente dall' interfaccia browser.
mi date un idea?
ciao
grazie
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 12 gen 2005 - 18:56
Puoi far scaricare sul client una applicazione .NET ?
Il client avrà il .NET Framework installato ?
Se entrambi le risposte sono positive poi vediamo come fare.
ciao
david
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
gio 13 gen 2005 - 00:56
si questo si, il framework 1.1 è installato.
quando dico che non ha office mi riferisco in pincipal modo al fatto che non c'è access ma le macchine sono nuove con xp home solo che utilizzano come applicazioni da ufficio quelle della sun (staroffice).
non le ideee molto chiare soprattutto per la lettura del file, pensavo di leggere il flusso dei caratteri convertendo il file excel in ascii ma aspetto di sentire quello che pensate prima voi.
ciao e grazie per l'interessamento.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 13 gen 2005 - 09:00
Si eventualmente ti conviene convertire il file Excel in altro formato più standard tipo Txt o meglio ancora Xml come già ti hanno consigliato. Oppure se sei in una LAN immagino che ci sarà almeno un PC con installato Excel.
Puoi mandare i file tramite copia banale da cartella a server e far elaborare il file da un'applicazione .NET che butterà tutto il suo contenuto nel database.
ciao
david
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
gio 13 gen 2005 - 23:31
si ma come si converte da excel? mi chiede il mapping cosa vuol dire?.. che devo costrtuire a mano una struttura xml che contenga i dati da esportare?
non creedo no?
grz ciao
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 16 gen 2005 - 12:36
Eh dipende dal tuo formato di Excel.
Se è una semplice griglia è un conto se invece è colorata, ci sono celle fuse, ecc. è tutt'altra storia.
Se è un formato standard quindi griglia semplice è sufficiente fare Salva con Nome e scegliere un formato tipo CSV o TXT.
La stessa cosa la puoi fare anche automaticamente tramite il VBA oppure con VB.NET/C# con i PIA di Office.
ciao
david
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
lun 17 gen 2005 - 11:26
dunque..il file salvandolo da excel lo posso convertire in xmlns. non so se va bene,... poi.., ho visto un lavoro di un tale su internet , no è quello che mi serve esattamente ma è un buon punto di partenza, carica il file di excel da una fin di dialogo e lo trasferisce in un dataset, (solo che è in c# e non ci capisco una mazza...la conversione non viene), qundi anche per rendermi conto di come funziona lo sto rifacendo a mano, la prima parte quella che carica il file e lo legge, dovrei solo adattarla, la seconda , invece di caricare il dataset così comè , deve togliere alcuni dati da excel e sostituirli con quelli obbligatori sul db, quindi trasferire i dati sul db remoto.
parte di caricamento dati:
'dichiarazioni
Private FileName As String
'delegates
Public Delegate Sub FileLoadEventHandler(ByVal sender As Object, ByVal e As FileLoadEventArgs)
Private Function ReturnConnection(ByVal fileName As String) As OleDbConnection
Return New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;" + "Extended Properties=""Excel 8.0;""")
End Function 'ReturnConnection
Private Sub bntOpen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bntOpen.Click
With oFileDia
.InitialDirectory = "C\"
.Filter = "Excel Files (*.xsl )|*.xsl"
Dim tmpDiag As DialogResult = .ShowDialog()
If tmpDiag <> DialogResult.Cancel Then
FileName = .FileName
TextNameFile.Text = FileName
If TestFile(FileName) Then
' delegate fileload event
RaiseEvent FileLoad(Nothing, New FileLoadEventArgs(FileName))
Else
MessageBox.Show("Invalid input file. To diagnose, please enable tracing!", TextNameFile)' qui ho già un errore(errore di conversione dice che non +ò essere convertito in stringa)
End If
End If
End With
End Sub
non credevo così difficile sta cosa..o almeno sembra a me.
ciao grz
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 23 gen 2005 - 11:20
Mi viene in mente una cosa.
E invece scusa far spedire il file .xls sul server e farlo processare dal DTS ?
Sono fatti apposta perchè non usarli. Ho capito che sul client non ci sono, allora facciamoli andare sul server :)
No ?
ciao
david
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
dom 23 gen 2005 - 20:51
dunque..qualche cosa ho fatto:
bon intanto esportato in un dataset tramite un libreria funziona(da schifo ma intanto...)
sull'inserimeto ni da un'errore di tipecasting che non riesco ad individuare"imput string not in correct format"
questo è il cod form:
Public Class Form1
Inherits System.Windows.Forms.Form
Private dataGrid1 As System.Windows.Forms.DataGrid
Private components As System.ComponentModel.Container = Nothing
Private DataTableName, DataSetName As String
Private ds As DataSet
Public Sub New()
DataTableName = "Products"
DataSetName = "set1"
Dim MyArray() As String = {"IdSubCat", "CategoryId", "ModelName", "ModelNumber", "Description", "IdFornitore", "Netto", "UnitCost", "Iva", "ProductImage".ToString}'qui metto i nomi di tutte le colonne del db poi l'utente sceglie solo quelle che servono tramite una combo
exlExp.OuputDatatableName = DataTableName
exlExp.OutputDatasetName = DataSetName
exlExp.AllowedOuputColumnNames = MyArray
End Sub 'New
Public Sub exlExp_DataSetExport(ByVal sender As System.Object, ByVal e As My.Data.Trans.DataSetExportEventArgs) Handles exlExp.DataSetExport
dataGrid1.DataSource = e.ExportedDataSet
dataGrid1.DataMember = DataTableName
ds = e.ExportedDataSet.Copy() 'qui lo copio per inviarlo al server sql
e.ExportedDataSet.AcceptChanges()
End Sub
Private Sub DoINN()
Dim cn As New SqlConnection
Dim cb As SqlCommandBuilder
Dim da As SqlDataAdapter
Try
Dim dsTmp As DataSet
' "..sql e stringa di connessione"
da = New SqlDataAdapter(sql, strcn)
cn.ConnectionString = strcn
dsTmp = ds.GetChanges
cb = New SqlCommandBuilder
cb.DataAdapter = da
da.UpdateCommand = _
cb.GetUpdateCommand()
da.InsertCommand = _
cb.GetInsertCommand()
da.DeleteCommand = _
cb.GetDeleteCommand
If dsTmp Is Nothing Then
MessageBox.Show("Nessun record da aggiornare")
Else
da.Update(ds, "Products")
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Conferma click aggiornamento")
End Try
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
DoINN()
End Sub
quindi questo sopra mi da un errore di typecasting ma inserisce i dati nel db, poi avevo fatto anche una routine per inserire nuovi dati dala griglia sarebe bene se si potesse modificare cancellare ecc direttamente l'output che esce dalla griglia, avevo fatto questo ma e sconclusionato e non bindato è no funziona quindi.
Private Sub InsertNewRow()
Dim dr As DataRow
Try
For Each dr In ds.Tables("Products").Rows
dr = ds.Tables("Products").NewRow
dr.BeginEdit()
dr("ModelNumber") = dr("ModelNumber")
dr("modelName") = dr("modelName")
dr("description") = dr("description")
dr("idSubCat") = dr("idSubCat")
dr("categoryId") = dr("categoryId")
dr("UnitCost") = dr("UnitCost")
dr("IdFornitore") = dr("IdFornitore")
dr.EndEdit()
Next
ds.Tables("Products").Rows.Add(dr)
Catch ex As Exception
MessageBox.Show(ex.Message, "Routine inserimento nel datatable()")
End Try
End Sub
Ciao grz
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 31 gen 2005 - 23:56
:-|
Chiedi troppo... è abbastanza impossibile per chiunque immergersi in un blocco di codice così cercando di capire come funziona.
Già faccio fatica con il codice che scrivo io :)
ciao
david
lobax
Profilo
| Junior Member
93
messaggi | Data Invio:
mar 1 feb 2005 - 01:18
si capisco, più che altro se c'era qualche cosa che saltava agli occhi magari da fuori qualche volta si vedono delle cose che magari chi lo scrive trascura, ..le cllasiche sviste...infatti adesso funziona, era solo che se tentavo di iviare una riga vuota di un errore di typecasting come è logico che sia , ora è a posto.
cmq quello che mi chiedo è, come fanno gli altri quando si presenta un problema del genere? sarà capitato sicuramente, ho cercato in rete ma ho trovato solo le operazioni contrarie(da sql a excel ) ma non partendo da un file x.xls per caricare una tabella sql.
se riesco ad avere un po' di tempo per fare un po' d'ordine ve la mando.
grazie ciao
lobax
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 1 feb 2005 - 22:33
A volte mi chiedo anche io molti come fanno a risolvere certi problemi !!
Dove magari io perdo delle ore o delle giornate intere....caspita.
Eppure succede.
ciao
david
Torna su
Stanze Forum
Elenco Threads
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 !