Method: Spreadsheet::Excel::Writer::Workbook#write_formats
- Defined in:
- lib/spreadsheet/excel/writer/workbook.rb
#write_formats(workbook, writer) ⇒ Object
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 |
# File 'lib/spreadsheet/excel/writer/workbook.rb', line 358 def write_formats workbook, writer # From BIFF5 on, the built-in number formats will be omitted. The built-in # formats are dependent on the current regional settings of the operating # system. BUILTIN_FORMATS shows which number formats are used by # default in a US-English environment. All indexes from 0 to 163 are # reserved for built-in formats. # The first user-defined format starts at 164 (0xa4). formats = @number_formats[workbook] = {} BUILTIN_FORMATS.each do |idx, str| formats.store client(str, 'UTF-8'), idx end ## Ensure at least a 'GENERAL' format is written formats.delete client('GENERAL', 'UTF-8') idx = 0xa4 workbook.formats.each do |fmt| str = fmt.number_format unless formats[str] formats.store str, idx # Number format string (Unicode string, 16-bit string length, ➜ 3.4) write_op writer, opcode(:format), [idx].pack('v'), unicode_string(str, 2) idx += 1 end end end |