예제 #1
0
        public async Task LoadDataSetAsync(IDatasetHelper datasetHelper, bool convertOADateTime)
        {
            if (!_isValid)
            {
                datasetHelper.IsValid = false;
            }
            datasetHelper.IsValid = true;

            datasetHelper.CreateNew();

            for (int ind = 0; ind < _workbook.Sheets.Count; ind++)
            {
                datasetHelper.CreateNewTable(_workbook.Sheets[ind].Name);
                datasetHelper.AddExtendedPropertyToTable("visiblestate", _workbook.Sheets[ind].VisibleState);

                await ReadSheetGlobalsAsync(_workbook.Sheets[ind]);

                if (_workbook.Sheets[ind].Dimension == null)
                {
                    continue;
                }

                _depth         = 0;
                _emptyRowCount = 0;

                //DataTable columns
                //todo: all very similar to sheet load in binary reader
                if (!_isFirstRowAsColumnNames)
                {
                    for (int i = 0; i < _workbook.Sheets[ind].ColumnsCount; i++)
                    {
                        datasetHelper.AddColumn(null);
                    }
                }
                else if (ReadSheetRow(_workbook.Sheets[ind]))
                {
                    for (int index = 0; index < _cellsValues.Length; index++)
                    {
                        if (_cellsValues[index] != null && _cellsValues[index].ToString().Length > 0)
                        {
                            datasetHelper.AddColumn(_cellsValues[index].ToString());
                        }
                        else
                        {
                            datasetHelper.AddColumn(string.Concat(COLUMN, index));
                        }
                    }
                }
                else
                {
                    continue;
                }

                datasetHelper.BeginLoadData();

                var hasRows = false;
                while (ReadSheetRow(_workbook.Sheets[ind]))
                {
                    hasRows = true;
                    datasetHelper.AddRow(_cellsValues);
                }

                if (hasRows)
                {
                    datasetHelper.EndLoadTable();
                }
            }
            datasetHelper.DatasetLoadComplete();
        }
예제 #2
0
 public async Task LoadDataSetAsync(IDatasetHelper datasetHelper)
 {
     await LoadDataSetAsync(datasetHelper, true);
 }