Class: Aio::Base::Toolkit::ExcelWps::Row

Inherits:
Object
  • Object
show all
Defined in:
lib/aio/base/toolkit/excel_wps.rb

Overview

SheetWork Class

Constant Summary collapse

FILL_TYPE =
4
@@cell_map =
("A".."Z").to_a

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(worksheet, row_id) ⇒ Row

Returns a new instance of Row.



200
201
202
203
204
205
# File 'lib/aio/base/toolkit/excel_wps.rb', line 200

def initialize(worksheet, row_id)
  @row_id = row_id
  @cell_count = 0
  @worksheet = worksheet
  @nil_space = []
end

Instance Attribute Details

#row_idObject (readonly)

Returns the value of attribute row_id.



197
198
199
# File 'lib/aio/base/toolkit/excel_wps.rb', line 197

def row_id
  @row_id
end

Instance Method Details

#<<(arr) ⇒ Object

特别注意,由于Toolkit中加入了Array,String的模块所以判断的时候特别注意要是



245
246
247
248
249
250
251
252
253
254
# File 'lib/aio/base/toolkit/excel_wps.rb', line 245

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

增加单元格



223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/aio/base/toolkit/excel_wps.rb', line 223

def add_cell(value, auto_fit = false, style = "NormalStyle")
  range = @worksheet.Range(cell_name(@cell_count))
  range.Value = value.to_s
  range.Style = style
  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

获得单元格的名字(通过索引)



257
258
259
260
261
262
263
264
265
# File 'lib/aio/base/toolkit/excel_wps.rb', line 257

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

获得单元格的名字(通过字母)



268
269
270
# File 'lib/aio/base/toolkit/excel_wps.rb', line 268

def cell_name!(letter)
  return letter + @row_id.to_s
end

#curent_cellObject

此时的单元格



208
209
210
# File 'lib/aio/base/toolkit/excel_wps.rb', line 208

def curent_cell
  return cell_name(@cell_count)
end

#first_cellObject

第一个单元格



213
214
215
# File 'lib/aio/base/toolkit/excel_wps.rb', line 213

def first_cell
  return cell_name(0)
end

#height=(height) ⇒ Object

设置行高



218
219
220
# File 'lib/aio/base/toolkit/excel_wps.rb', line 218

def height=(height)
  @worksheet.rows(@row_id).RowHeight = height
end

#merge(idx_begin, idx_end) ⇒ Object

合并一行中的单元格



286
287
288
289
290
291
292
293
294
# File 'lib/aio/base/toolkit/excel_wps.rb', line 286

def merge(idx_begin, idx_end)
  cell_begin = "#{idx_begin}#{@row_id}"
  cell_end = "#{idx_end}#{@row_id}"
  range = @worksheet.Range("#{cell_begin}:#{cell_end}")
  range.merge
  tmp = ((idx_begin.upcase)..(idx_end.upcase)).to_a
  tmp.shift
  @nil_space = (@nil_space | tmp).sort
end

#pagebreakObject

对此时的行的下方下分页符



303
304
305
# File 'lib/aio/base/toolkit/excel_wps.rb', line 303

def pagebreak
  @worksheet.rows(@row_id+1).PageBreak = 1
end

#real_rowObject

返回此时的::Row类



308
309
310
# File 'lib/aio/base/toolkit/excel_wps.rb', line 308

def real_row
  @worksheet.rows(@row_id)
end

#set_cell(index, value, auto_fit = false, style = "NormalStyle") ⇒ Object



272
273
274
275
276
277
# File 'lib/aio/base/toolkit/excel_wps.rb', line 272

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

设置单元格风格



280
281
282
283
# File 'lib/aio/base/toolkit/excel_wps.rb', line 280

def set_style(letter, style = "NormalStyle")
  range = @worksheet.range(cell_name!(letter))
  range.Style = style
end

#to_letter(index) ⇒ Object

通过索引变成对应的字母



239
240
241
# File 'lib/aio/base/toolkit/excel_wps.rb', line 239

def to_letter(index)
  @@cell_map.at(index)
end

#wraptext(letter) ⇒ Object

开启自动换行



297
298
299
300
# File 'lib/aio/base/toolkit/excel_wps.rb', line 297

def wraptext(letter)
  range = @worksheet.range(cell_name!(letter))
  range.WrapText = true
end