IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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
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.