Formát čísla a data   otázka

VB.NET, ADO.NET

Ahoj,

něják se mi nedaří vyřešit problém s načítámím dat z excelu.

Pokud je v načítané buňce dlouhé číslo, někdy (ale ne pokaždé, bohužel se mi nepodařilo přijít na žádnou souvislost) se načte ve formátu 11+56456e (nebo tak něják) a datum se načte jako číslo (39692).

Data načítám takto:

 Sub nacistDataZexcelu(ByVal strFilePath As String, ByVal list As String)

 Dim ExcelSpojeni As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilePath & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1""")
    Dim ExcelTable As DataTable=New DataTable
    Dim ExcelAdapter As OleDb.OleDbDataAdapter


        ExcelTable.Reset()
       



        'načtení obsahu listu

        ExcelAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM [" & list & "]", ExcelSpojeni)




        Try
            ExcelAdapter.Fill(ExcelTable)
        Catch ex As Exception
            Exit Sub
        Finally
            spojeni.Close()
        End Try




        frmAplikace.dgv4Import.DataSource = ExcelTable

    End Sub

Vše ostatní se načte bez problémů. Mně by stačilo kdyby všechno bylo jako string. Nenapadá někoho něco?:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skúsil by som niečo takéto

Private resultFormat As String = "###0.#####################" 'Format pre preklopenie double cisla na string
 Format(result, resultFormat)

Metóda Format vracia string, ktorý by už mal byť v správnom formáte

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Toto jsem moc nepochopil, já jsem myslel jestli to jde nastavit někde už při načítání dat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Řeším podobný problém.

Načítám buňku z excelu "2:00" ve vlastnostech je nastaveno formát jiné. Když si s tím dám práci, tak zjistím že 0:01 odpovídá číslu 0.000694444. Takže pomocí různých dělení a odčítání se mi to podaří převést. Nevíte někdo jak buňku načíst jako string ve formátu v jakém jí vidím. raději bych byl, kdyby se mi načetla přímo jako čas h2 min0. a ne jako zběsilé desetinné číslo.

Děkuji za rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejspíš nejsem úplně ten pravý na rady, nicméně s excelem pár zkušeností mám.

Pokud máte v excelu čas nebo datum, tak ve skutečnosti je v buňce uložena hodnota ve formátu OADate (tedy Double).

Rozhodně bych se nebránil načítání hodnoty v této podobě, protože jedna z výhod je, že tím Vám odpadá problém s kulturou datumů. V Double je to vždy stejné a doporučuji převést hodnotu na datum, až na finálním místě a tím pádem ji budete mít ve správně kultuře (podobě). Stačí v počítači přepnout jazyk, a už by jste měl jinak řadu problémů.

pro převod: DateTime.FromOADate(hodnota)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To máte sice pravdu, ale problém je že někdy se datum (nebo dlouho číslo) načtou tak jak jsou vidět a jindy zase tak,jak jsem psal v prvním příspěvku...:(

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste zjistit, jaký má buňka formát - text nebo datum?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback