WriteXLSX gem 无法正确打印日期格式作为正常数字格式打印
WriteXLSX gem not print date format properly print as normal number format
需要在xlsx文件中打印日期mm/dd/yyyy格式,使用add_format方法添加格式,但打印为'2019-09-27详细日期
workbook = ::WriteXLSX.new(file, strings_to_urls: false)
worksheet = workbook.add_worksheet('Sheet 1')
row=column=1
date_val = Date.today
date_format = workbook.add_format({'num_format': 'dd/mm/yy'})
worksheet.write(1 + row, column, date_val, date_format)
workbook.close
然后我尝试了 write_date_time 方法,代码示例如下
workbook = ::WriteXLSX.new(file, strings_to_urls: false)
worksheet = workbook.add_worksheet('Sheet 1')
row=column=1
date_val = Date.today
date_format = workbook.add_format({'num_format': 'dd/mm/yy'})
worksheet.write_date_time(1 + row, column, item[:value]&.iso8601, date_format)
workbook.close
你正在做的事情的问题是你正在传递一个 date
对象,但是如果你已经阅读了 Date Time documentation 那么前两行就是这样 -
- A date/time in Excel is a real number plus an Excel number format.
- WriteXLSX doesn’t automatically convert date/time strings in write() to an Excel date/time.
现在,要回答您的问题,您需要将 date
转换为 Excel 可以理解的 number
。
date_time = DateTime.now.strftime('%Y-%m-%dT00:00:00.000Z')
我已经添加了 00:00:00.000
因为你不关心时间,如果你也想要时间然后检查 strftime documentation
date_time_number = worksheet.convert_date_time(date_time)
format2 = workbook.add_format(:num_format => 'dd/mm/yy')
worksheet.write(row, col, number, format2)
这应该可以为您解决
的底部
需要在xlsx文件中打印日期mm/dd/yyyy格式,使用add_format方法添加格式,但打印为'2019-09-27详细日期
workbook = ::WriteXLSX.new(file, strings_to_urls: false)
worksheet = workbook.add_worksheet('Sheet 1')
row=column=1
date_val = Date.today
date_format = workbook.add_format({'num_format': 'dd/mm/yy'})
worksheet.write(1 + row, column, date_val, date_format)
workbook.close
然后我尝试了 write_date_time 方法,代码示例如下
workbook = ::WriteXLSX.new(file, strings_to_urls: false)
worksheet = workbook.add_worksheet('Sheet 1')
row=column=1
date_val = Date.today
date_format = workbook.add_format({'num_format': 'dd/mm/yy'})
worksheet.write_date_time(1 + row, column, item[:value]&.iso8601, date_format)
workbook.close
你正在做的事情的问题是你正在传递一个 date
对象,但是如果你已经阅读了 Date Time documentation 那么前两行就是这样 -
- A date/time in Excel is a real number plus an Excel number format.
- WriteXLSX doesn’t automatically convert date/time strings in write() to an Excel date/time.
现在,要回答您的问题,您需要将 date
转换为 Excel 可以理解的 number
。
date_time = DateTime.now.strftime('%Y-%m-%dT00:00:00.000Z')
我已经添加了 00:00:00.000
因为你不关心时间,如果你也想要时间然后检查 strftime documentation
date_time_number = worksheet.convert_date_time(date_time)
format2 = workbook.add_format(:num_format => 'dd/mm/yy')
worksheet.write(row, col, number, format2)
这应该可以为您解决
的底部