将查询写入工作表时存储为文本的数字

时间:2016-03-14 19:44:58

标签: mysql ruby excel rubygems

我正在使用以下宝石创建报告:

require "mysql2"
require "watir"
require "io/console"
require "writeexcel"

mysql2查询数据库后,将查询转换为多维数组,如下所示:

Mysql2::Client.default_query_options.merge!(:as => :array)

mysql = Mysql2::Client.new(:host => "01.02.03.405", :username => "user", :password => "pass123", :database => "db")

report = mysql.query("SELECT ... ASC;")

arr = []
report.each {|row| arr << row}

然后最终将数据写入Excel电子表格,如下所示:

workbook = WriteExcel.new("File.xls")
worksheet = workbook.add_worksheet(sheetname = "Report")

header = ["Column A Title", ... , "Column N Title"]

worksheet.write_row("A1", header)
worksheet.write_col("A2", arr)

workbook.close

当我在最新版本的Excel for OSX(Office 365)中打开文件时,对于每个主要包含数字的单元格,我收到以下错误:

Excel error.

此报告的目标受众可能因此类错误而分散注意力。

我尝试了.set_num_format here文档中找到的所有writeexcel可枚举方法。

如何创建包含特殊字符和数字的列的报告,例如货币,write excel?

我应该考虑完全使用其他宝石吗?

1 个答案:

答案 0 :(得分:1)

创建工作表后定义格式。

format01 = workbook.add_format  
format01.set_num_format('#,##0.00')

然后用格式写下列。

worksheet.write_col("A2", arr, format01)

由于我不是Ruby用户,所以这只是S.W.A.G。