Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886

    [C#] Lettura file Excel binario con OLEDB 12.0

    Vi siete mai connessi usandolo come sorgente dati per un Datatable, ad un file xlsb (excel binario) ?

    Non riesco a capire il modo più performante, nè trovo la connectionstring.

    (È supportato da office 2007 ma con il 2013 non mi riconosce neanche il file in apertura)

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    il file privacy.xlsb, excel 2013, lo leggo con

    codice:
        
    Private StringaConnessione As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\tmp\privacy.xlsb;Extended Properties=""Excel 12.0 Xml;HDR=YES;"";"
    
    Protected Sub LinkButton1_Click(sender As Object, e As System.EventArgs) Handles LinkButton1.Click
        Dim dt As DataTable = msole.GetDataTable(StringaConnessione, "SELECT * FROM [assessorati$]")
        l.DataTableInPlaceHolder(Me.PlaceHolder1, dt)
    End Sub
    non lo leggo però con la libreria npoi
    Pietro

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886

    Lettura file binario Excel - OLEDB.12.0 non registrato

    Avevo aperto un thread a riguardo ma non lo trovo.
    Devo leggere un file Excel in formato xlsb, ma il provider nella stringa di connessione non va.

    Il messaggio:
    "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

    Su un'altra macchina avevo risolto installando il componente di MS Office, questo
    https://www.microsoft.com/en-us/down....aspx?id=54920

    ...ma ora non ci riesco piu'. Qualcuno ha dritte ?
    Ultima modifica di djciko; 05-03-2019 a 18:39

  4. #4
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    magari è la stessa cosa non ho guardato il link
    io ho una cosa che fa più o meno così, carica il file da un fileupload e lo legge.... vedi se riesci a usarla per quel che ti serve
    codice:
    Dim allowdFile As String() = {".xls", ".xlsx"}
    Dim FileExt As String = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName)
    Dim isValidFile As Boolean = allowdFile.Contains(FileExt)
    If isValidFile Then
              
       Dim FileSize As Integer = FileUpload1.PostedFile.ContentLength
       If (FileSize <= 1048576) Then '// 1048576 Byte = 1 MB
          filename = Path.GetFileName(Server.MapPath(FileUpload1.FileName))
    
          Dim pathsave As String = "~/" & ConfigurationManager.AppSettings("uplpath")
          FileUpload1.SaveAs(FilePath + filename)
          hfXLS.Value = FilePath
                            
          Dim con As OleDbConnection
          If (FileExt = ".xls") Then
                 con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + filename + ";Extended Properties=Excel 8.0;")
          ElseIf (FileExt = ".xlsx") Then
                 con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + filename + ";Extended Properties=Excel 12.0;")
          End If
          con.Open()
                            
          'lista dei fogli presenti nel file
          Dim restr() As Object
          Dim dt As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, restr)
          'punto il primo foglio
          Dim getExcelSheetName As String = dt.Rows(0) !Table_Name.ToString()
          'Seleziono righe e inserisco in dataset
          Dim ExcelCommand As OleDbCommand = New OleDbCommand("SELECT * FROM [" & getExcelSheetName & "]", con)
          Dim ExcelAdapter As OleDbDataAdapter = New OleDbDataAdapter(ExcelCommand)
          Dim ExcelDataSet As DataSet = New DataSet()
          ExcelAdapter.Fill(ExcelDataSet)
          con.Close()
                            
                            
          Dim dx As DataTable = ExcelDataSet.Tables(0)
                ...            
       eccetera eccetera
    Ultima modifica di supermac; 06-03-2019 a 17:01
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    e' un problema di sistema operativo e componenti registrati.

    ho provato su un'altra macchina, messo IIS compatibile a 32 e funziona.

    su quest'altra no sto sbagliando qualcosa

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    ho risolto, e' bastato impostare IIS express come application server e --togliere-- la modalità 64 bit da visual studio nelle
    opzioni > progetti e soluzioni > progetti web.

    solved

  7. #7

  8. #8
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    nel mio caso è tornata utile questa spiega
    https://www.mikesdotnetting.com/arti...-local-machine
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    grazie superBurghy, molto chiara.

    comunque, siccome è un problema in cui incappo ogni tanto, lo metto nelle discussioni utili..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.