Beispiel #1
0
        public ExcelMapData get_row_data(ExcelMapData src_map, CellValue[] v_row_data, int v_optCode)
        {
            ExcelMapData rtn;

            if (src_map == null)
            {
                rtn = new ExcelMapData();
            }
            else
            {
                rtn = src_map;
            }
            Serchdata serch_root = new Serchdata(this, rtn);

            _get_row_data(serch_root, v_row_data, v_optCode);
            return(rtn);
        }
Beispiel #2
0
        private void _get_row_data(Serchdata v_st, CellValue[] v_row_data, int v_optCode)
        {
            ExcelMapData           curmap  = v_st.curmap;
            ComplexExcelHeaderNode parrent = v_st.node;
            List <KeyValue <ComplexExcelHeaderNode> > keyValSet = v_st.node.getKeyValueSet();

            for (int i = 0; i < keyValSet.Count; i++)
            {
                Key the_key = keyValSet[i].key;
                ComplexExcelHeaderNode node = parrent.get_node(the_key);


                if (node.IsSkip)
                {
                    continue;
                }
                if (node.IsLeaf)
                {
                    ExcelHeaderDecorate ehd = m_header_dct[node.LeafDataIdx];
                    if (!ehd.is_need_opt(v_optCode))
                    {
                        continue;
                    }
                    CellValue celldata = v_row_data[node.LeafDataIdx];
                    if (!celldata._isMiss)
                    {
                        ExcelMapData leafData = new ExcelMapData();
                        leafData.initAsLeafeData(celldata);
                        leafData.Type = EExcelMapDataType.cellData;
                        curmap.addData(the_key, leafData);
                    }
                }
                else
                {
                    ExcelMapData map_next = new ExcelMapData();
                    map_next.initAsTableData();
                    map_next.Type = EExcelMapDataType.cellTable;
                    Serchdata sdnew = new Serchdata(node, map_next);
                    _get_row_data(sdnew, v_row_data, v_optCode);
                    if (!map_next.IsEmpty())
                    {
                        curmap.addData(the_key, map_next);
                    }
                }
            }
        }