Tag: ruby

由rubyzip压缩的xlsx不能被Excel读取

我正在编写可以读/写Excel xlsx文件的代码。 xlsx文件只是几个xml文件的zip文件,所以为了testing我是否可以编写一个文件,我使用了一个名为rubyzip的gem来解压缩xlsx文件,然后立即将其压缩回新的压缩文件,而不用修改数据。 但是,当我这样做时,我无法打开新的excel文件,据说这是损坏的。 或者,如果我使用Mac OS X的存档实用程序(本机应用程序来处理zip文件),并且我解压并重新压缩excel文件,数据没有损坏,我可以在Excel中打开生成的文件。 我发现rubyzip的“unzip”functionrubyzip “破坏”数据,而是压缩过程。 (实际上,当我在rubyzip创build的新zip文件上使用Archive Utility时,文件可以被Excel读取)。 我想知道为什么会发生这种情况,以及可以通过Excel以可读的方式编程压缩内容的解决scheme。 我的代码压缩: def compress(path) path.sub!(%r[/$],'') archive = File.join(path,File.basename(path))+'.zip' FileUtils.rm archive, :force=>true Zip::ZipFile.open(archive, 'w') do |zipfile| Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file| temp = file zipfile.add(file.sub(path+'/',''),file) end end end

用ruby读取和写入相同的excel文件

我正在寻找一种方法来读取和写在ruby相同的Excel文件。 我看到了这个话题,但是这些build议对我来说不起作用。 我试图用Roo的gem,但是这不允许写。 我试图使用电子表格gem,但这不读取Xlsx文件。 有没有办法读取和写在ruby相同的Excel文件?

将图像添加到由Axlsx生成的Excel文件。

我正在使用Axlsx来生成Excel文件。 我需要将图像添加到Excel文件。 我已经使用这个代码: ws.add_image(:image_src => '../something',:noSelect => true, :noMove => true) do |image| image.width=1000 image.height=200 image.start_at 0,0 end “ ws ”是工作表。 它添加了所需的图像,但我不能用此代码设置图像的“ 宽度 ”和“ 高度 ”。 即使我给width=2000和height=1000 ,它不会影响Excel文件中的图像。 有人可以告诉我,我做错了什么?

我如何构build一个XML文件?

我正在构build一个XML模板来导出到Excel。 我想要做这样的事情: <Worksheet ss:Name=<%= page.title %>> 给工作表的页面标题的名称,但这是行不通的。 如果我做: <Worksheet ss:Name="sheet1"> 这一切工作。 如何将页面标题分配给工作表名称?

Ruby 2.0 CSV阅读器以不同的方式处理Microsoft Excel生成的CSV文件,而不会去除控制字符

问题: Mac上的Ruby 2.0 CSV阅读器Mavericks将Microsoft Excel生成的CSV文件以不同方式embeddedHTML。 用FasterCSV在Ruby 1.8上运行良好。 我刚刚将我的Mac升级到了Mavericks(OS X 10.9.4),并将Ruby升级到了2.0.0p451(我曾经使用Ruby 1.8+和FasterCSV gem,但是现在使用的是Ruby 2.0以及原生CSV)。 ruby版本: ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] CSV文件是从Office 2011生成的,从原始的“.xlsx”文件保存。 下面的HTML包含在Microsoft .xlsx文件的单个单元格中,然后将其保存为CSV … <h1 style="text-align:center; font: bold 1.5em Arial;">This is the Title</h1> <p style="text-align:center;"><img style="width:300px; height:100px" src="./IMAGES/MAIN/image1.png" alt="Image 1"/></p> <p style="text-align:center;">This is a sentence.</p> 还有其他单元格,也embedded了HTML代码。 重现… 打开一个Excel工作表 将上面的HTML复制到单元格A1(确保有Mac回车控制+命令+ HTML结构之间的返回(例如在“h1”结构的结尾和新的“p”结构的开始之间),以确保行在所有完整的HTML结构之间切换,就在Excel单元格中。 将单元格A1中的内容复制到单元格A1正下方的单元格A2,以确保多个CSV行(您的文件将有两个正式的CSV行)。 首先将文件保存为xlsx文件(例如“file.xlsx”) […]

Rails +电子表格gem:如何推行成索引没有索引?

我不得不通过一个数组循环,我不知道哪一行我要开始,因为它有所不同: def add_data @sheet = @workbook.create_worksheet responses.each do |response| # I want something like @sheet.rows << [response.id] end end 我正在浏览文档,但所有的例子都使用了指定的行索引: http : //spreadsheet.rubyforge.org/GUIDE_txt.html 我将如何将一个值的数组推到文件中的下一行?

Ruby / Watir – 从arrays中打印格式

我正在使用Watir为网站做一些自动化testing。 这个特殊的testing,我从一个Excel工作表中拉出一系列sku数字,然后从数组中随机select一个作为我的testing。 该号码被放置在search字段中,并将我的产品拉回。 这是我的问题:我从Excel中提取数据,然后在控制台中打印数据以validation正确的数据是否已收获。 ok当sku被放到网站的search框中时,它的格式如下:[“000000”] 我需要消除方括号和引号。 我研究了漂亮的打印,尽pipe这样做会有效果。 这是我添加的漂亮的打印: def pretty_print(q) q.group(1, '[','"','"',']') { q.seplist(self) {|v| q.pp v } } end 下面是从数组中获取SKU的代码,并试图将上面的漂亮的打印方法应用到string“SK”: puts = "Data path : " + path workbook = excel.Workbooks.Open(path) worksheet = workbook.WorkSheets(1) worksheet.Select puts "getting 2D Array from column range a2:a100 in sheet 2" sku1 = worksheet.Range("a2:a5").Value puts (sku1) $count = 1 […]

如何添加超链接到axlsx中的单元格?

使用spreadsheetgem,您可以运行Spreadsheet::Link.new('http://hyperlinkhere.com', 'Some words')来制作一个包含string“Some words”的单元格的电子表格,其超链接会导致“ http://hyperlinkhere.com“ 。 什么是axlsx相当于? 编辑:如果我想要写一个以上的单元格的行呢? 有了spreadsheet ,你可以这样做: newSheetRow[13] = Spreadsheet::Link.new('url.com','text') newSheetRow[14] = 'some text' 我如何用axlsx的.add_row方法做到这.add_row ?

Rails axlsxgem – 公式不逃避

有没有办法在呈现电子表格时忽略执行公式? 目前, sheet.add_row("=10+10")将评估20,即使我给:formula => :false或:type=> :string 唯一的方法是提供一个单引号,但这不是一个漂亮的方法。

Roo Gem检查空的工作表

我正在使用roo gem来parsingExcel(xlsx)文件。 但是,文件(工作簿)中总是有一些空白表单。 有没有办法看看表单是空的还是nil ? 更新 wb = Roo::Excelx.new 'chapter_data.xlsx' wb.sheets.each do |sheet| wb.default_sheet = sheet unless wb.nil? code….. end end wb.nil? 不起作用,它返回false。 更新我已经能够处理这个问题的唯一方法是解救no方法错误。 我不喜欢这样处理,寻找更好的方法来检查表单是否为空。 begin header_row = wb.row(1) rescue NoMethodError => err # do nothing, this sheet is empty can't find a way to check if it is empty pos end