Class: Aio::Base::Toolkit::ExcelOffice::Row
- Inherits:
-
Object
- Object
- Aio::Base::Toolkit::ExcelOffice::Row
- Defined in:
- lib/aio/base/toolkit/excel_office.rb
Constant Summary collapse
- FILL_TYPE =
4
- @@cell_map =
("A".."Z").to_a
Instance Attribute Summary collapse
-
#row_id ⇒ Object
readonly
Returns the value of attribute row_id.
Instance Method Summary collapse
-
#<<(arr) ⇒ Object
特别注意,由于Toolkit中加入了Array,String的模块 所以判断的时候特别注意要是.
-
#add_cell(value, auto_fit = false, style = "NormalStyle") ⇒ Object
增加单元格.
-
#cell_name(index) ⇒ Object
获得单元格的名字(通过索引).
-
#cell_name!(letter) ⇒ Object
获得单元格的名字(通过字母).
-
#curent_cell ⇒ Object
此时的单元格.
-
#first_cell ⇒ Object
第一个单元格.
-
#height=(height) ⇒ Object
设置行高.
-
#initialize(worksheet, row_id) ⇒ Row
constructor
A new instance of Row.
-
#merge(idx_begin, idx_end) ⇒ Object
合并一行中的单元格, 这里仅仅是记录.
- #merge! ⇒ Object
-
#pagebreak ⇒ Object
对此时的行的下方下分页符.
-
#real_row ⇒ Object
返回此时的::Row类.
- #set_cell(index, value, auto_fit = false, style = "NormalStyle") ⇒ Object
-
#set_style(letter, style = "NormalStyle") ⇒ Object
(also: #style)
设置单元格风格.
-
#to_letter(index) ⇒ Object
通过索引变成对应的字母.
-
#wraptext(letter) ⇒ Object
开启自动换行.
Constructor Details
#initialize(worksheet, row_id) ⇒ Row
Returns a new instance of Row.
202 203 204 205 206 207 208 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 202 def initialize(worksheet, row_id) @row_id = row_id @cell_count = 0 @worksheet = worksheet @nil_space = [] @merge_cell = [] end |
Instance Attribute Details
#row_id ⇒ Object (readonly)
Returns the value of attribute row_id.
199 200 201 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 199 def row_id @row_id end |
Instance Method Details
#<<(arr) ⇒ Object
特别注意,由于Toolkit中加入了Array,String的模块所以判断的时候特别注意要是
256 257 258 259 260 261 262 263 264 265 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 256 def << (arr) case arr when ::Array arr.size.times do |t| add_cell(arr[t]) end when ::String add_cell(arr) end end |
#add_cell(value, auto_fit = false, style = "NormalStyle") ⇒ Object
增加单元格
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 230 def add_cell(value, auto_fit = false, style = "NormalStyle") range = @worksheet.Range(cell_name(@cell_count)) begin range.Value = value.to_s range.Style = style rescue Exception retry end range.Columns.AutoFit if auto_fit @cell_count += 1 while(@nil_space.include?(to_letter(@cell_count))) do range = @worksheet.Range(cell_name(@cell_count)) range.Value = "" range.Style = style @cell_count += 1 end end |
#cell_name(index) ⇒ Object
获得单元格的名字(通过索引)
268 269 270 271 272 273 274 275 276 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 268 def cell_name(index) second = index % 26 first = (index - second) / 26 if first == 0 return @@cell_map[second] + @row_id.to_s end first -= 1 return @@cell_map[first] + @@cell_map[second] + @row_id.to_s end |
#cell_name!(letter) ⇒ Object
获得单元格的名字(通过字母)
279 280 281 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 279 def cell_name!(letter) return letter + @row_id.to_s end |
#curent_cell ⇒ Object
此时的单元格
211 212 213 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 211 def curent_cell return cell_name(@cell_count) end |
#first_cell ⇒ Object
第一个单元格
216 217 218 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 216 def first_cell return cell_name(0) end |
#height=(height) ⇒ Object
设置行高
221 222 223 224 225 226 227 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 221 def height=(height) begin @worksheet.rows(@row_id).RowHeight = height rescue Exception retry end end |
#merge(idx_begin, idx_end) ⇒ Object
合并一行中的单元格, 这里仅仅是记录
297 298 299 300 301 302 303 304 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 297 def merge(idx_begin, idx_end) cell_begin = "#{idx_begin}#{@row_id}" cell_end = "#{idx_end}#{@row_id}" @merge_cell << [cell_begin, cell_end] tmp = ((idx_begin.upcase)..(idx_end.upcase)).to_a tmp.shift @nil_space = (@nil_space | tmp).sort end |
#merge! ⇒ Object
306 307 308 309 310 311 312 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 306 def merge! return if @merge_cell.empty? @merge_cell.each do |cell_begin, cell_end| range = @worksheet.Range("#{cell_begin}:#{cell_end}") range.merge end end |
#pagebreak ⇒ Object
对此时的行的下方下分页符
321 322 323 324 325 326 327 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 321 def pagebreak begin @worksheet.rows(@row_id+1).PageBreak = 1 rescue Exception retry end end |
#real_row ⇒ Object
返回此时的::Row类
330 331 332 333 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 330 def real_row #@worksheet.rows(@row_id) @worksheet.range("A#{@row_id}:#{cell_name(@cell_count - 1)}") end |
#set_cell(index, value, auto_fit = false, style = "NormalStyle") ⇒ Object
283 284 285 286 287 288 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 283 def set_cell(index, value, auto_fit = false, style = "NormalStyle") range = @worksheet.Range(cell_name(index)) range.Value = value.to_s range.Style = style range.Columns.AutoFit if auto_fit end |
#set_style(letter, style = "NormalStyle") ⇒ Object Also known as: style
设置单元格风格
291 292 293 294 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 291 def set_style(letter, style = "NormalStyle") range = @worksheet.range(cell_name!(letter)) range.Style = style end |
#to_letter(index) ⇒ Object
通过索引变成对应的字母
250 251 252 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 250 def to_letter(index) @@cell_map.at(index) end |
#wraptext(letter) ⇒ Object
开启自动换行
315 316 317 318 |
# File 'lib/aio/base/toolkit/excel_office.rb', line 315 def wraptext(letter) range = @worksheet.range(cell_name!(letter)) range.WrapText = true end |