1 /
55
56
61 package org.apache.poi.hssf.record.formula;
62
63 import org.apache.poi.util.LittleEndian;
64
65
69
70 public class AreaPtg
71 extends Ptg
72 {
73 public final static short sid = 0x25;
74 private final static int SIZE = 9;
75 private short field_1_first_row;
76 private short field_2_last_row;
77 private short field_3_first_column;
78 private short field_4_last_column;
79
80
81
82 public AreaPtg()
83 {
84 }
85
86 public AreaPtg(byte [] data, int offset)
87 {
88 offset++;
89 field_1_first_row = LittleEndian.getShort(data, 0 + offset);
90 field_2_last_row = LittleEndian.getShort(data, 2 + offset);
91 field_3_first_column = LittleEndian.getShort(data, 4 + offset);
92 field_4_last_column = LittleEndian.getShort(data, 6 + offset);
93 System.out.println(toString());
94 }
95
96 public String toString()
97 {
98 StringBuffer buffer = new StringBuffer();
99
100 buffer.append("AreaPtg\n");
101 buffer.append("firstRow = " + getFirstRow()).append("\n");
102 buffer.append("lastRow = " + getLastRow()).append("\n");
103 buffer.append("firstCol = " + getFirstColumn()).append("\n");
104 buffer.append("lastCol = " + getLastColumn()).append("\n");
105 buffer.append("firstColRowRel= "
106 + isFirstColRowRelative()).append("\n");
107 buffer.append("lastColRowRel = "
108 + isLastColRowRelative()).append("\n");
109 buffer.append("firstColRel = " + isFirstColRelative()).append("\n");
110 buffer.append("lastColRel = " + isLastColRelative()).append("\n");
111 return buffer.toString();
112 }
113
114 public void writeBytes(byte [] array, int offset)
115 {
116 }
117
118 public int getSize()
119 {
120 return SIZE;
121 }
122
123 public short getFirstRow()
124 {
125 return field_1_first_row;
126 }
127
128 public void setFirstRow(short row)
129 {
130 field_1_first_row = row;
131 }
132
133 public short getLastRow()
134 {
135 return field_2_last_row;
136 }
137
138 public void setLastRow(short row)
139 {
140 field_2_last_row = row;
141 }
142
143 public short getFirstColumn()
144 {
145 return ( short ) (field_3_first_column & 0x3FFF);
146 }
147
148 public short getFirstColumnRaw()
149 {
150 return field_3_first_column;
151 }
152
153 public boolean isFirstColRowRelative()
154 {
155 return (((getFirstColumnRaw()) & 0x8000) == 0x8000);
156 }
157
158 public boolean isFirstColRelative()
159 {
160 return (((getFirstColumnRaw()) & 0x4000) == 0x4000);
161 }
162
163 public void setFirstColumn(short column)
164 {
165 field_3_first_column = column;
166 }
167
168 public void setFirstColumnRaw(short column)
169 {
170 field_3_first_column = column;
171 }
172
173 public short getLastColumn()
174 {
175 return ( short ) (field_4_last_column & 0x3FFF);
176 }
177
178 public short getLastColumnRaw()
179 {
180 return field_4_last_column;
181 }
182
183 public boolean isLastColRowRelative()
184 {
185 return (((getLastColumnRaw()) & 0x8000) == 1);
186 }
187
188 public boolean isLastColRelative()
189 {
190 return (((getFirstColumnRaw()) & 0x4000) == 1);
191 }
192
193 public void setLastColumn(short column)
194 {
195 field_4_last_column = column;
196 }
197
198 public void setLastColumnRaw(short column)
199 {
200 field_4_last_column = column;
201 }
202
203 public String toFormulaString()
204 {
205 String firstrow = "" + (getFirstRow() + 1);
206 String lastrow = null;
207
208 if (isLastColRowRelative())
209 {
210 lastrow = "" + (getFirstRow() + getLastRow());
211 }
212 else
213 {
214 lastrow = "" + (getLastRow() + 1);
215 }
216
217
218
219 return colNumToLetter(getFirstColumn()) + firstrow + ":"
220 + colNumToLetter(getLastColumn()) + lastrow;
221 }
222
223 public String colNumToLetter(int col)
224 {
225 byte[] b =
226 {
227 0x41
228 };
229
230 b[ 0 ] += ( byte ) col;
231 String retval = null;
232
233 try
234 {
235 retval = new String(b, "UTF-8");
236 }
237 catch (java.io.UnsupportedEncodingException e)
238 {
239 throw new RuntimeException(
240 "NON JDK 1.3 COMPLIANT JVM -- YOUR JVM MUST SUPPORT UTF-8 encoding as per docs!");
241 }
242 return retval;
243 }
244 }
245