Programim dhe zhvillim, javascript, python, php, html

Detyroni EPPLUS të lexojë si tekst

Unë jam duke zhvilluar një aplikacion për të lexuar skedarët xlsx, për të bërë një vlerësim dhe për të futur në bazën e të dhënave. Fatkeqësisht kur përpiqem të lexoj kolonat e shënuara si numerike (fe me kode EAN-13) marr vlerën minimale të një int. Përdoruesi nuk e sheh këtë sepse Excel e shfaq atë siç duhet.

Si mund ta bëj atë të lexojë skedarin si tekst i thjeshtë? E di që mund të përdor OLEBD për të, por më duhet gjithashtu ta modifikoj skedarin në mënyrë dinamike, kështu që epplus ExcelPackage është zgjidhja më e mirë.

Këtu është kodi që përdor:

 FileInfo file = new FileInfo(path);
 MainExcel = new OfficeOpenXml.ExcelPackage(file);
 {
   var ws = MainExcel.Workbook.Worksheets.First();
   DataTable tbl = new DataTable();
        for (var rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++)      //currently loading all file
                {
                    var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                    var row = tbl.NewRow();
                    foreach (var cell in wsRow)
                    {
                        row[cell.Start.Column - 1] = cell.Text;
                    }
                    tbl.Rows.Add(row);
                }          
 }

dhe kështu i numëroj kolonat

   foreach (var firstRowCell in ws.Cells[3, 1, 3, ws.Dimension.End.Column])
                {
                    System.Type typeString = System.Type.GetType("System.String") ;
                    tbl.Columns.Add( firstRowCell.Text , typeString );
                }

Për njerëzit që mund të shqetësojnë, këtu është skedari (funksionon edhe për përdoruesit jo të Google): https://drive.google.com/open?id=0B3kIzUcpOx-iMC1iY0VoLS1kU3M&authuser=0

Vura re se vetia ExcelRange.value është një grup që përmban të gjitha objektet të paformatuara. Por sapo të përsëritni mbi qeliza në ExcelRange dhe të kërkoni pronësinë cell.Text, ajo tashmë është përpunuar. Përpjekja për të modifikuar ConditionalFormatting dhe DataValidation në ExcelRange nuk ndihmon (p.sh. AddContainsText()) - @EDIT--> As për një fletë të tërë :-(

Unë do të preferoja NUK të hedh ExcelRange.Value si Array, është e shëmtuar dhe shumë e kushtëzuar.

03.04.2015

  • Ju lutem, mund të tregoni se si shënohet kolona si numerike? 06.04.2015
  • E redaktova pyetjen, ende nuk kam ide se si ta bëj këtë siç duhet. 08.04.2015
  • Ku po lexoni qelizën që po del si int.MinValue? Unë shoh një rresht ku keni row[...] = cell.Text, por ajo veti Text duhet të jetë si varg. Nuk mbaj mend të jetë objekt. 08.04.2015
  • Ky është problemi, unë nuk jam. Mendoj se është Epplus që parakonverton qelizat përpara se të kem mundësinë t'i lexoj siç duhet. Dhe cell.Text është varg. Megjithatë unë marr -2147483648 1/ për çdo vlerë të vetme më të madhe se 4 miliardë 08.04.2015
  • A është e mundur të postoni një skedar të vogël mostër .xlsx me një mostër të të dhënave që prodhojnë problemin (ose ndoshta të shpjegoni se si të rikrijohet?). Duket se nuk mund ta riprodhoj problemin... 08.04.2015
  • Sigurisht, e redaktova pyetjen. 09.04.2015

Përgjigjet:


1

Me sa duket kjo është zgjidhja (megjithatë jo kod i plotë, duhet të shtoni kolona në tabelën e të dhënave). Nuk munda të gjeja vargun e formatit që specifikon 'nuk ka formatim' në Epplus, por ja ku e keni.

 var ws = MainExcel.Workbook.Worksheets.First();
 DataTable tbl = new DataTable();
 for (var rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++)      
 {
     var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
     var array = wsRow.Value as object[,];

     var row = tbl.NewRow();
     int hhh =0;

     foreach (var cell in wsRow)
          {
           cell.Style.Numberformat.Format = "@";
           row[cell.Start.Column - 1] = cell.Text;
          }
     tbl.Rows.Add(row);
 }
07.05.2015
  • Për të shtuar disa sqarime, [cell/range].Numberformat.Format = "@"; formaton qelizën/vargun e specifikuar si Tekst në fletën e punës së krijuar (në krahasim me të përgjithshmen, numrin, monedhën, kontabilitetin, datën e shkurtër, etj.) 17.11.2015

  • 2

    Qelizat në skedarin tuaj janë të personalizuara si një pjesë. E keni bërë këtë me qëllim? Gjithsesi, nëse doni ta mbani këtë format, mund të përdorni në mënyrë alternative cell.Value ose cell.RichText.Text për të marrë numrin tuaj 13-shifror.

    Shpresoj se kjo ndihmon.

    28.04.2015
  • Janë përdoruesit që më dërgojnë skedarët. Unë nuk jam fare përgjegjës për redaktimin e tyre. E gjeta mënyrën për ta bërë këtë siç duhet tani, BTW Cell.value është përpunuar tashmë kur e kërkon :) 29.04.2015
  • E zgjidhi problemin për mua. --› 'cell.Text' tregoi pjesën VISIBLE, por jo vlerën e plotë në qelizë, ndërsa 'cell.Value' më dha vlerën e plotë. 'cell.RichText.Text' meqë ra fjala dukej se shkaktonte probleme të çuditshme gjatë përsëritjes mbi qelizat e një rreshti. 13.05.2016
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..