zmena/uprava datoveho formatu sloupcu u DataTable vytvoreneho v Excelu   otázka

C#, ADO.NET

Dobry den,

delsi dobu uz zapasim s nasledujicim problemem: z nactene tabulky z Excelu 2003 se exportem do DataTable a nasledne do DataGridView porusi datove formaty(misto datumu/casu je cislo, double fromat je integer) Na kterem miste je treba "osetrit" ty datove formaty? Jeste pred exportem do DataTable vytvorit vsechny sloupce a definovat format? Zde mam pak ale problem jak rici adapreru ve kterem je nactena cela Excel tabulka do ktereho slouce ma davat data...Zkousel jsem po vyplneni dat v DataSetu/DataGridView datovy format zmenit pripadne ho nove definovat to mi ale nejde? Kde delam chybu? Dekuji za pripadny tip.

(Excel 2003, V.Studio 2010, net.4)


            string query = "SELECT * FROM [" + sheetsToolStripComboBox.SelectedItem + "$]";
            OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);

            
            DataTable dt = new DataTable();
            dt.Columns[5].DataType = System.Type.GetType("System.DateTime"); 
            // Create the first column
            //DataColumn IDColumn = new DataColumn();
            //IDColumn.DataType = System.Type.GetType("System.Decimal");
            //IDColumn.ColumnName = "ID Ship";
            //dt.Columns.Add(IDColumn);
            
             adapter.Fill(dt);

            //dt.Columns[5].DataType = System.Type.GetType("System.DateTime"); 
            //dt.Columns[5].DataType = Convert.ToDateTime;

            connection.Close();
            
            sheetDataGridView.DataSource = dt;

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

Dobrý den,

je to sice pracnější ale můžete použít OleDbDataReader, číst jednotlivé buňky a provádět konverzi na DateTime před umístěním hodnoty buňky do DataTable.

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

Dobrý den, já jsem řešil podobný problém (datum nebyl typu date ale string). Udělal jsem to tak, že jsem si kódem vytvořil nový sloupec s příslušným datovým typem (v tomto případě date), data jsem pak do něj zkopíroval a původní sloupec smazal. Nevím do jaké míry je tento postup efektivní, ale jednalo se o poměrně malý soubor (cca 2000 řádků) takže s výkonem nebyl problém.

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

Dekuji, to zni zajimave. Jak ale mohu zkopirovat nactenou Excel tabulku v DataAdapteru kdyz tam nevydim nikde moznost pristup k jednotlivym sloupcum?

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