Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
discount week 80

Diskuze: Uložení dat z excelu do datasetu

Aktivity
Avatar
Wayne
Člen
Avatar
Wayne:22.1.2020 11:11

Ahoj,

narazil jsem na problém, že když chci data importovat, tak při vytvoření ExcelDataReader a uložení do datasetu mi to vyhodí tuto hlášku "Value cannot be null.\r\nParameter name: String". Když však soubor v excelu přeuložím vše funguje. Neřešil už někdo tento problém?

Zkusil jsem: Takto zjednodušeně vypadá můj kód kde se to snažím nacpat do datasetu

using (IExcelDataReader er = ExcelReaderFactory.CreateOpenXmlReader(stream))
{
    DataSet dataSet = null;
    er.IsFirstRowAsColumnNames = true;

    dataSet = er.AsDataSet() //zde padá;
 
Odpovědět
22.1.2020 11:11
Avatar
SebelaMichal
Člen
Avatar
SebelaMichal:22.1.2020 15:41

co použít prostě jinou knihovnu ?

 
Nahoru Odpovědět
22.1.2020 15:41
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Petr P
Člen
Avatar
Petr P:18.2.2020 13:11

řešil jsem pomocí EPPlus

public static DataTable ImportExceltoDatatable(string filepath, bool hasHeader = true)
        {
            using (var pck = new OfficeOpenXml.ExcelPackage())
            {
                using (var stream = System.IO.File.OpenRead(filepath))
                {
                    pck.Load(stream);
                }
                var ws = pck.Workbook.Worksheets.First();
                DataTable dt = new DataTable();
                foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
                {
                    dt.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
                }
                var startRow = hasHeader ? 2 : 1;
                for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
                {
                    var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                    DataRow row = dt.Rows.Add();
                    foreach (var cell in wsRow)
                    {
                        row[cell.Start.Column - 1] = cell.Text;
                    }
                }
                return dt;
            }
 
Nahoru Odpovědět
18.2.2020 13:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.