private void InitFromJson(string fileName) { string jsonStr; using (StreamReader r = new StreamReader(fileName)) { jsonStr = r.ReadToEnd(); } TJsonTablePortion portion = JsonConvert.DeserializeObject <TJsonTablePortion>(jsonStr); Title = portion.Title; DocumentFile = portion.InputFileName; CopyPortion(portion.Header, false); CopyPortion(portion.Section, true); CopyPortion(portion.Data, true); }
public TJsonTablePortion TablePortionToJson(ColumnOrdering columnOrdering, int body_start, int body_end) { var table = new TJsonTablePortion(); table.DataStart = body_start; int headerEnd = columnOrdering.GetPossibleHeaderEnd(); for (int i = columnOrdering.GetPossibleHeaderBegin(); i < columnOrdering.GetPossibleHeaderEnd(); i++) { var row = GetJsonByRow(GetCells(i)); table.Header.Add(row); } // find section before data for (int i = body_start; i >= headerEnd; i--) { string dummy; // cannot use prevRowIsSection var row = GetCells(i); if (IsSectionRow(row, columnOrdering.GetMaxColumnEndIndex(), false, out dummy)) { table.Section.Add(GetJsonByRow(row)); break; } } int maxRowsCount = body_end - body_start; table.DataEnd = body_start; int addedRows = 0; while (table.DataEnd < GetRowsCount() && addedRows < maxRowsCount) { if (!IsEmptyRow(table.DataEnd)) { table.Data.Add(GetJsonByRow(GetCells(table.DataEnd))); addedRows++; } table.DataEnd++; } return(table); }