Announcement

Collapse
No announcement yet.

Zahlenformat beim Einlesen einer xlsx Datei

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zahlenformat beim Einlesen einer xlsx Datei

    Code:
                        string selectstring = "select * from [Tabseite]";
                        OleDbDataAdapter da = new OleDbDataAdapter(selectstring, conn);
                        DataTable DT = new DataTable();
                        da.Fill(DT);
    Mit dem Code lese ich die Exceltabelle ein. In der Tabelle gibt es einzelne Felder mit einem Wert wie 39.5
    Diese Felder werden in meiner DataTable nicht übernommen, ich erhalte ein leeres Feld.
    Das Format wird in Excel unter "Zellen formatieren" als Standard angegeben.

    Ändere ich das Format der gesamten Spalte von Standard in Text, funktioniert das Einlesen.
    Diesen zusätzlichen Schritt möchte ich aber sparen, weil er gern vergessen wird.
    Wie kann ich den OleDbDataAdapter dazu bringen, einfach ALLES als Text einzulesen?
    Günther

  • #2
    Fehlt da nicht das DataSet?

    ==> https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx

    Comment


    • #3
      DataSet ist eine Eigenschaft von DataTable, die hier mit dem Defaultwert initialisiert ist.
      Möglicherweise muß ich genau da was ändern, aber was und wie?
      Günther

      Comment


      • #4
        https://www.connectionstrings.com/ac...-data-as-text/

        Aber dann bekommst du es wirklich als Text. Also die ganzen Zahlenformat (Komma oder Punkt), Datumsformat etc. Probleme mußt du dann selbst lösen.
        Wenn du das sauber lösen willst gehe ich eher davon as das du ein ~Culture~ Problem hast. Sowas wie in de-de Formatiertes Excel auf einem en-us System mit SQL Regeln .. kann nur schiefgehen wenn man die Culture nicht explizit steuert.
        Kenne mich da aber zuwenig aus um zu sagen wo man da ansetzen muß.


        Fehlt da nicht das DataSet?
        Nein? Er möchte eine Tabelle aus Excel einlesen da reicht eine DataTable. DataSet macht nur dann Sinn wenn man auch mehr als eine Tabelle da rein tun und gemeinsam verwalten will.

        Comment


        • #5
          @Ralf, der Unterschied im verlinkten Connectionstring ist HDR=YES, aber egal ob da YES oder NO steht, das Problem bleibt.
          Mit HDR=YES schreibt er mir das erste Feld in den Header, und ich kann die Spalte dann nicht mehr mit F1... ansprechen. NO ist mir lieber.

          Bei den betroffenen Feldern handelt es sich zwar um Zahlen, die aber Teil einer Benennung sind und als Text interpretiert werden sollen.
          Günther

          Comment


          • #6
            Ich zielte auch mehr auf den IMEX Parameter ab.

            Comment


            • #7
              der ändert auch nichts am Problem
              Günther

              Comment


              • #8
                Das Problem tritt nun auch bei einigen "Integerzahlen" auf.
                Alle Zellen sind als "Standard" formatiert. Formeln sind nicht hinterlegt.
                Die Problemzellen sind mit einem grünen Dreieck gekennzeichnet - siehe Bild.
                Die Leute die (in Fernost) die Exceldatei erstellen, zu bitten, auf vernünftige Formatierung zu achten, bringt nichts.
                Ich will einfach nur alle Zeilen als Text einlesen.
                Attached Files
                Günther

                Comment

                Working...
                X