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.
[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