zhao
2021-07-02 23ee356c6f260ecc1a48bbb8bd60932b979e4698
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
 
/* ====================================================================
   Licensed to the Apache Software Foundation (ASF) Under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for Additional information regarding copyright ownership.
   The ASF licenses this file to You Under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
 
       http://www.apache.org/licenses/LICENSE-2.0
 
   Unless required by applicable law or agreed to in writing, software
   distributed Under the License is distributed on an "AS Is" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations Under the License.
==================================================================== */
 
 
 
namespace HH.WMS.Utils.NPOI.HSSF.Record
{
    using System;
    using System.Text;
    using HH.WMS.Utils.NPOI.Util;
 
 
    /**
     * Title: Recalc Id Record
     * Description:  This record Contains an ID that marks when a worksheet was last
     *               recalculated. It's an optimization Excel uses to determine if it
     *               needs to  recalculate the spReadsheet when it's opened. So far, only
     *               the two values <c>0xC1 0x01 0x00 0x00 0x80 0x38 0x01 0x00</c>
     *               (do not recalculate) and <c>0xC1 0x01 0x00 0x00 0x60 0x69 0x01
     *               0x00</c> have been seen. If the field <c>isNeeded</c> Is
     *               Set to false (default), then this record Is swallowed during the
     *               serialization Process
     * REFERENCE:  http://chicago.sourceforge.net/devel/docs/excel/biff8.html
     * @author Luc Girardin (luc dot girardin at macrofocus dot com)
     * @version 2.0-pre
     * @see org.apache.poi.hssf.model.Workbook
     */
 
    public class RecalcIdRecord
       : StandardRecord
    {
        public const short sid = 0x1c1;
        //public short[] field_1_recalcids;
 
        //private bool isNeeded = true;
        private int _reserved0;
        //private bool isNeeded = true;
        /**
     * An unsigned integer that specifies the recalculation engine identifier
     * of the recalculation engine that performed the last recalculation.
     * If the value is less than the recalculation engine identifier associated with the application,
     * the application will recalculate the results of all formulas on
     * this workbook immediately after loading the file
     */
        private int _engineId;
        public RecalcIdRecord()
        {
            _reserved0 = 0;
            _engineId = 0;
        }
 
        /**
         * Constructs a RECALCID record and Sets its fields appropriately.
         * @param in the RecordInputstream to Read the record from
         */
 
        public RecalcIdRecord(RecordInputStream in1)
        {
            in1.ReadUShort(); // field 'rt' should have value 0x01C1, but Excel doesn't care during reading
        _reserved0 = in1.ReadUShort();
        _engineId = in1.ReadInt();
        }
 
        // /**
        // * Set the recalc array.
        // * @param array of recalc id's
        // */
 
        //public void SetRecalcIdArray(short[] array)
        //{
        //    field_1_recalcids = array;
        //}
 
        // /**
        // * Get the recalc array.
        // * @return array of recalc id's
        // */
 
        //public short[] GetRecalcIdArray()
        //{
        //    return field_1_recalcids;
        //}
 
        public bool IsNeeded
        {
            get { return  true; }
        }
 
        public override String ToString()
        {
            StringBuilder buffer = new StringBuilder();
            buffer.Append("[RECALCID]\n");
            buffer.Append("    .reserved = ").Append(HexDump.ShortToHex(_reserved0)).Append("\n");
            buffer.Append("    .engineId = ").Append(HexDump.IntToHex(_engineId)).Append("\n");
            buffer.Append("[/RECALCID]\n");
            return buffer.ToString();
        }
 
        public override void Serialize(ILittleEndianOutput out1)
        {
            out1.WriteShort(sid); // always write 'rt' field as 0x01C1
            out1.WriteShort(_reserved0);
            out1.WriteInt(_engineId);
        }
        public int EngineId
        {
            set
            {
                _engineId = value;
            }
            get
            {
                return _engineId;
            }
        }
        protected override int DataSize
        {
            get
            {
                return 8;
            }
        }
 
        public override short Sid
        {
            get { return sid; }
        }
    }
}