Ruby1.9.2之——关联Excel
来源:互联网 发布:淘宝苹果专卖店 编辑:程序博客网 时间:2024/06/01 07:33
这算是一个通用模块吧,excel.rb
require 'win32ole' // 引用gem
module Excel //模块名字class WorkBook //类名, 工作薄
#xlEdge
#xlEdgeBottom =9
#xlEdgeLeft = 7
#xlEdgeRight = 10
#xlEdgeTop = 8
#xlColor
#xlColorBlank = 1
#xlColorWhite =2
#xlColorRed = 3
#xlColorGreen =10
#xlColorBlue =5
#xlColorYellow =6
#xlColorPurple = 7 # zi se
#xlColorCyan =8 #qing se
#xlBgColorYellow =19
#xlBgColorCyan =20
#xlBgColorPurple =24
#xlDefaultLineStyle = 1
@@worksheets_name =[]
def initialize(encoding="GB2312") //初始化,设置编码
@excel = WIN32OLE.new("excel.application")
@excel.visible = FALSE
@workbook = @excel.Workbooks.Add()
#@style_id = 0
@encoding = encoding
create_style
end
def add_worksheet(name) //添加worksheet, 如果重名,则名字后面加1
while @@worksheets_name.include?(name)
name +="1"
end
@@worksheets_name << name //将worksheet name存放在数组worksheets_name中。
worksheet = @workbook.Worksheets.Add()
worksheet.Activate
worksheet.name = name
return WorkSheet.new(worksheet)
end
def show //显示表格
@excel.visible = TRUE
end
def save(name) //保存表格
@workbook.save("#{name}")
end
def saveas(name) //另存为表格
@workbook.saveas("#{name}")
end
def close //关闭表格
@workbook.Close(0)
@excel.Quit()
end
def create_style //创建样式
sty=@workbook.Styles.Add('NormalStyle')
sty.Font.Size = 12
sty.Borders(7).LineStyle=1
sty.Borders(8).LineStyle=1
sty.Borders(9).LineStyle=1
sty.Borders(10).LineStyle=1
sty=@workbook.Styles.Add('TitleStyle')
sty.Font.Size = 16
sty.Font.Bold =true
sty.Font.ColorIndex =3
#sty.Interior.ColorIndex = 20
end
end
#worksheet
class WorkSheet //工作页
IMAGE_ROW_NUM = 56
@@worksheets_name =[]
def initialize(worksheet)
@row_count = 1
@worksheet = worksheet
end
def add_space_line(n=1) //添加行
return if n<1
@row_count +=n
end
def add_title(name) //添加title
add_space_line
add_row.add_cell(name,false,"TitleStyle")
end
def add_row() //添加列
@current_row = Row.new(@worksheet,@row_count)
@row_count +=1
return @current_row
end
def current_row //返回当前行
return @current_row
end
def add_image(image_path) //添加图片
if not File.exist?(image_path)
return
end
add_space_line 1
add_row
cell_name=current_row.first_cell
@worksheet.Range(cell_name).Select
@worksheet.Pictures.Insert(image_path)
add_space_line IMAGE_ROW_NUM
end
end
#row
class Row //列
FILL_TYPE = 4
@@cell_map =["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
def initialize(worksheet,row_id)
@row_id =row_id
@cell_count=0
@worksheet = worksheet
end
def curent_cell
return cell_name(@cell_count)
end
def first_cell
return cell_name(0)
end
def add_cell(value,auto_fit = false,style = "NormalStyle")
range = @worksheet.Range(cell_name(@cell_count))
range.Value = value.to_s;
range.Style=style
range.Columns.AutoFit if auto_fit
@cell_count +=1
end
def cell_name(index)
second = index % 26
first = (index - second) / 26
if first == 0
return @@cell_map[second]+@row_id.to_s
end
first -=1
return @@cell_map[first]+@@cell_map[second]+@row_id.to_s
end
def set_cell(index,value,auto_fit = false,style = "NormalStyle")
range=@worksheet.Range(cell_name(index))
range['Value'] = value;
range['Style']=style
range.Columns.AutoFit if auto_fit
end
end
end
excel_test.rb
require './excel'
excel = Excel::WorkBook.new
worksheet = excel.add_worksheet("joe")
worksheet.add_title('title')
row = worksheet.add_row
row.add_cell("myaniu")
row.add_cell(0)
row.add_cell("2011-01-01 01:01:01")
worksheet = excel.add_worksheet("Lix")
worksheet.add_title('first')
row = worksheet.add_row
row.add_cell("shangshu")
row.add_cell(0)
row.add_cell("2011-01-01 01:01:01")
excel.saveas("test_excel.xls")
excel.close
PS: 其中一部分参考
- Ruby1.9.2之——关联Excel
- Ruby1.9.2之——Require
- Ruby1.9.2之——生成HTML文件
- rvm+ruby1.9.2+rails3
- Ruby1.9.2+rails3环境搭建方法总结
- ruby1.9.2+rails3+nginx+passenger+postgresql
- 关于ruby1.9.2连接mysql5.5数据库
- rails登录示例(ruby1.9.2 ,…
- Watir In Action —— Setup note(Watir安装/Windows XP/Chrome 17/Ruby1.9.3-p0)
- 如何在Ubuntu10.04上安装RVM及Ruby1.9.2
- windows 下ruby1.9.2、Rails3.0.9安装和配置
- ubuntu10.10 ruby1.9.2 rails3.0 mysql 架设过程
- ubuntu12.04 安装ruby1.9.2, ruby on rails
- ubuntu11.04上ruby1.9.2 rals3 mysql 开发环境配置
- 在windows下安装ruby1.9.2,rails和DevKit
- VC关联excel方法
- excel 关联数据
- PHP学习笔记——ThinkPHP开发指南-关联模型之关联定义
- Dev-C++:同时编译多个文件
- YUV格式详解
- 安装 Eclipse Memory Analyzer
- 保护眼睛,计算机窗口最科学的颜色
- flex中保存cookie,关闭IE窗口,清除cookie
- Ruby1.9.2之——关联Excel
- plsql知识梳理-序列
- 徘徊
- 第六章:【UCHome二次开发】缓存机制解析
- OAUTH
- 为谁停留,使者的过客
- 我想我是适合独处的人
- Selenium测试环境搭建
- Maven 之setting.xml pom.xml