ruby操作excel表读和写 ruby excel

   2023-02-09 学习力0
核心提示:转载:http://blog.csdn.net/xianqiang1/article/details/7298203 require 'win32ole'require 'iconv'   #一个编码转换库,在这里由于声明了采用编码为UTF-8,故没用 WIN32OLE.codepage = WIN32OLE::CP_UTF8# Get the Excel Application APIexcel = WIN32OL

转载:http://blog.csdn.net/xianqiang1/article/details/7298203

 

require 'win32ole'

require 'iconv'   #一个编码转换库,在这里由于声明了采用编码为UTF-8,故没用

 

WIN32OLE.codepage = WIN32OLE::CP_UTF8

# Get the Excel Application API

excel = WIN32OLE::new('excel.Application')

# Open the Excel file

workbook = excel.Workbooks.open("C:/Users/XXX/Desktop/test.xls")

 

# Focus on Sheet1

worksheet = workbook.worksheets(1)

worksheet.Select

 

results = File.open("test.txt", "w")

# conv = Iconv.new("UTF-8", "")

# Output the the values

(1..22).collect do |line|

        ('a'..'ad').collect do |row|

                result = worksheet.Range("#{row}#{line}")["Value"]

                #result = conv.iconv("#{result}")

                results.write "#{result}\t"

    end

    results.write "\r\n"

end  

# Exit the application

workbook.close()

excel.Quit()  

results.close()

 

 

写入Excel

# 测试用于生成"バグ管理票"的电子表格文件

require "win32ole"

 

# 声明Excel的采用的编码为UTF-8

WIN32OLE.codepage = WIN32OLE::CP_UTF8

 

excel = WIN32OLE::new('excel.Application')

 

# 设置显示Excel程序

excel.visible = true

 

# 默认创建有三个表的电子表格,可选的参数有:

#1 单工作表

#2 图表

#3 宏表

#4 国际通用宏表

#5 与默认的相同

#6 与1同

#7 对话框

workbook = excel.Workbooks.Add(1)

# 定位于第一个表格

worksheet = workbook.worksheets(1)

worksheet.Select

 

# 设置单元格宽度

worksheet.Range("A1:AG1").ColumnWidth = 3

 

# 合并单元格

worksheet.Range("A1:K1").Merge(0)

worksheet.Range("L1:Y2").Merge(0)

 

worksheet.Range("A1")["Value"]="バグ管理***"

# 字体加粗

worksheet.Range("L1").Font.Bold=true

# 字体大小

worksheet.Range("L1").Font.Size=14

# 字体颜色

worksheet.Range("L1").Font.ColorIndex = 1

worksheet.Range("L1")["Value"]="バグ管理票"

 

worksheet.Range("Z1:AC1").Merge(0)

worksheet.Range("AD1:AG1").Merge(0)

 

worksheet.Range("Z1")["Value"]="决裁者"

worksheet.Range("AD1")["Value"]="申请者"

 

# 设置单元格的高度

worksheet.Range("A2:AG2").RowHeight=50

 

worksheet.Range("A2:C2").Merge(0)

worksheet.Range("D2:E2").Merge(0)

worksheet.Range("F2:H2").Merge(0)

worksheet.Range("I2:K2").Merge(0)

 

worksheet.Range("Z2:AC3").Merge(0)

worksheet.Range("AD2:AG3").Merge(0)

 

worksheet.Range("A2")["Value"] = "バグ区分"

worksheet.Range("D2")["Value"] = "部署略称"

worksheet.Range("F2")["Value"] = "PJNO-SEQ区分"

worksheet.Range("I2")["Value"] = "通し***"

 

worksheet.Range("A3:C3").Merge(0)

worksheet.Range("D3:E3").Merge(0)

worksheet.Range("F3:H3").Merge(0)

worksheet.Range("I3:K3").Merge(0)

worksheet.Range("L3:Y3").Merge(0)

 

worksheet.Range("A3")["Value"] = "B_外_"

worksheet.Range("D3")["Value"] = "経企"

worksheet.Range("F3")["Value"] = "_41030_"

# 设置单元格格式为文本格式,常见的还有:

# @ # 文本

# $#,##0.00 # 贷币

# 0.00_ # 浮点数

# #,##0 # 整数

# 0.00% # 百分数

# m/d/yyyy# 时间

worksheet.Range("I3").NumberFormat ="@"

worksheet.Range("I3")["Value"] = "0005"

worksheet.Range("L3")["Value"] = "( 外部仕様不良 )"

 

worksheet.Range("A4:A5").Merge(0)

worksheet.Range("A5:AG5").RowHeight=50

worksheet.Range("A4").Value = "査阅栏"

 

values = ["取缔役会", "経営会议", "社长", "常务", "管掌役员", "事业部长", "部长", "课长"]

count = 0

last_column = ""

('A'..'AG').each_with_index do |column, index|

next if index == 0

if (index-1)%4 == 0

last_column = column

elsif (index-1)%4 == 3

worksheet.Range("#{last_column}4:#{column}4").Merge(0)

worksheet.Range("#{last_column}5:#{column}5").Merge(0)

worksheet.Range("#{last_column}4").Value = values[count]

count = count + 1

end

end

 

values = ["バグ内容", "修正内容", "确认方法"]

authors = ["発见者", "修正者", "结果确认者"]

times = ["発生日", "修正日", "确认日"]

3.times do |i|

worksheet.Range("B#{6+i*2}:E#{7+i*2}").Merge(0)

worksheet.Range("F#{6+i*2}:Y#{7+i*2}").Merge(0)

worksheet.Range("Z#{6+i*2}:AC#{6+i*2}").Merge(0)

worksheet.Range("Z#{7+i*2}:AC#{7+i*2}").Merge(0)

worksheet.Range("AD#{6+i*2}:AG#{6+i*2}").Merge(0)

worksheet.Range("AD#{7+i*2}:AG#{7+i*2}").Merge(0)

worksheet.Range("B#{6+i*2}").Value= values[i]

worksheet.Range("Z#{6+i*2}").Value= times[i]

worksheet.Range("AD#{6+i*2}").Value = authors[i]

 

worksheet.Range("A#{7+i*2}:AG#{7+i*2}").RowHeight = 50

end

 

worksheet.Range("B12:E12").Merge(0)

worksheet.Range("F12:M12").Merge(0)

worksheet.Range("N12:Q12").Merge(0)

worksheet.Range("R12:Y12").Merge(0)

worksheet.Range("Z12:AC12").Merge(0)

worksheet.Range("AD12:AG12").Merge(0)

 

worksheet.Range("B12").Value = "予定バグ数"

worksheet.Range("N12").Value = "発见バグ数"

worksheet.Range("Z12").Value = "解决日"

worksheet.Range("AD12").Value = "6/22/2012"

 

worksheet.Range("B13:E13").Merge(0)

worksheet.Range("F13:Y13").Merge(0)

worksheet.Range("Z13:AC13").Merge(0)

worksheet.Range("AD13:AG13").Merge(0)

 

worksheet.Range("B13").Value = "リリースバージョン"

worksheet.Range("Z13").Value = "リリース日"

worksheet.Range("AD13").Value = "6/30/2012"

 

 

values = ["PJNO-SEQ", "PJ略称", "开発担当", "PJリーダ"]

items = ["バグ 摘出タイプ", "PJ名称", "部门名", "部名/Grp名"]

4.times do |i|

worksheet.Range("B#{14+i}:E#{14+i}").Merge(0)

if i==0

worksheet.Range("F14:K14").Merge(0)

else

worksheet.Range("F#{14+i}:M#{14+i}").Merge(0)

end

worksheet.Range("N#{14+i}:Q#{14+i}").Merge(0)

worksheet.Range("R#{14+i}:AG#{14+i}").Merge(0)

 

worksheet.Range("B#{14+i}").Value = values[i]

worksheet.Range("N#{14+i}").Value = items[i]

end

 

worksheet.Range("A6:A17").Merge(0)

worksheet.Range("A6").Value = "必须项目"

 

# 设置单元格的水平与垂直文本对齐方式

worksheet.Range("A1:AG17").HorizontalAlignment = 8

worksheet.Range("A1:AG17").VerticalAlignment = 2 #(1~5)

 

# 设置表格的边框

worksheet.Range("A1:AG17").Borders.Weight = 1

worksheet.Range("A1:AG17").Borders.ColorIndex = 1

worksheet.Range("A1:AG17").Borders.LineStyle = 7 #(1~13)

# 设置表格的背影颜色

worksheet.Range("A1:AG17").Interior.ColorIndex=2

 

# 保存电子表格

workbook.saveas "C:\\Users\\XXX\\Desktop\\Book2.xls"

workbook.close

 

# 退出Excel程序

excel.Quit()

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • [ruby on rails] 跟我学之(6)显示指定数据
    根据《[ruby on rails] 跟我学之路由映射》,我们知道,可以访问 GET    /posts/:id(.:format) 来显示具体的对象。 修改 app/controllers/posts_controller.rb的show这个action。这里有个难题,如果获取url里面的参数?可以通过params内置变量进行访问
    03-16
  • [ruby on rails] 跟我学之(10)数据输入验证
    这里简单加上几个验证,非空,最小长度,唯一修改app/models/post.rb文件,如下:class PostActiveRecord::Base#attr_accessible :title, :contentvalidates :title, :context, :presence = truevalidates :title, :length = { :minimum =2}validates :title,
    03-16
  • 我尝试使用 Ruby 和 mittsu 库制作 3D 战斗动作游戏
    我尝试使用 Ruby 和 mittsu 库制作 3D 战斗动作
    概述这篇文章是关于我偶然发现的 hitbox 的回忆录。2022 夏季鲁比训练营创造了这个游戏。我的游戏仓库这里是。我们作为一个团队开发,有 4 名成员第一次见面,并第一次使用 Git 和 Github 进行开发。使用的技术是Ruby,三通图书馆是。我主要负责碰撞检测,所
    03-16
  • 我只是想在我的 Mac 上将 Ruby 和 Rails 更新到终端中的最新版本。 .
    我只是想在我的 Mac 上将 Ruby 和 Rails 更新到
    介绍自从我尝试创建一个简单的应用程序以来已经有很长时间了,并且我尝试在创建它之前将 Ruby 和 Rails 更新到最新版本,但是我意外卡住了,所以我将它作为备忘录留下。作为版本升级1. 更新 Homebrew 和 rbenv2. 红宝石更新3. Rails 更新这就是它的感觉。让我
    03-16
  • ruby写爬虫 ruby python
    ruby写爬虫 ruby python
    http://www.javaeye.com/topic/545160爬虫性能比较http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails/srcapihttp://huacnlee.com/blog/ruby-scrapi-collect-koubei  2009年4月22日 星期三用ruby写的一个网络爬虫程序前
    03-08
  • 一个关于创建一个可以用 Ruby 做 UMAP 的 gem 的故事
    一个关于创建一个可以用 Ruby 做 UMAP 的 gem
    介绍统一流形逼近和投影 (UMAP) 是一种通过降维的可视化方法,通常与 t-SNE 一起使用。用 Ruby 语言执行机器学习时,瘤胃我认为有很多情况下你使用 gem 调用。瘤胃有t-SNE但不是UMAP。这一次,它是一个 C++ 库乌马普的红宝石绑定我创造了它,所以我会在我忘记
    03-08
  • 让我们制作一个应用程序,当您在表格①中输入名称时输出 PDF 戳记(使用 Ruby on Rails 创建 PDF 文件)
    让我们制作一个应用程序,当您在表格①中输入名
    介绍你好!我的名字是荣查本。这次在Ruby on Rails中实现PDF转换的时候,用到了一个叫Prawn的gem,所以总结了一下。您可以通过阅读本文创建フォームに名前を入力するとPDF化された印鑑を出力するアプリ。即使是我,一个初学者也可以做到,所以实现方法很简单
    03-08
  • [脚本_Ruby]Windows安装配置Ruby On Rails
    感觉Java学的差不多了,想接触下Ruby On Rails,看看它比Java WEB高效到哪里了,在Ubuntu12.10上弄了两天总是报错提示没有指向的文件sqlite3,不管怎么安装sqlite3都不行,到最后没办法只有跑到WIN7平台下试试,以下就是我搭建Ruby On Rails的过程:    
    02-10
  • Prawn:Ruby生成PDF更简捷的选择
    在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。1、安装安装很简单,直接使用gem install prawn即可安装完
    02-10
  • Ruby On Rails:InstanRails
    参考数据:对于Ruby On Rails 不是粉清楚的朋友可以参考以下的连结信息,该连结网站都提供不错的Ruby On Rails 信息。Ruby: 一个纯OO的脚本语言..Ruby on Rails: 快速建置Web的MVC架构的Framework说明:整合环境: Instant Rails 是在Windows环境中,整合了Ruby,
    02-10
点击排行