lib/ld/excel/excel.rb in ld-0.3.5 vs lib/ld/excel/excel.rb in ld-0.3.6
- old
+ new
@@ -2,10 +2,11 @@
Spreadsheet.client_encoding = 'UTF-8'
class Ld::Excel
attr_accessor :excel, :path
+ #= 参数 path(可以为空)
def initialize path = nil
if path
if path.match(/.xls$/)
if File::exist? path
@excel = Spreadsheet.open path
@@ -19,25 +20,41 @@
else
@excel = Spreadsheet::Workbook.new
end
end
+ #= 作用 打开一个xls文件
+ #= 参数 xls文件的全路径或相对路径的字符串
+ #= 示例 Ld::Excel.open 'project.xls'
+ #= 返回 Ld::Excel实例
def self.open path
self.new path
end
-
- def open_sheet name
- Ld::Sheet.open @excel, name
+
+ #= 作用 写xls文件(会创建一个新的xls文件)
+ #= 返回 如果创建成功,返回Ld::Excel实例.如果创建失败会返回false(不会导致程序终止)
+ #= 参数1 path 字符串,指定要写的文件路径(最好使用全路径)
+ def self.write path, &block
+ if path.class == Hash
+ path = path[:file_path]
+ end
+ excel = Ld::Excel.new
+ block.call excel
+ excel.save path
end
- def flush
- @excel = Ld::Excel.open @path
+ #= 作用 write的同名方法,作用和使用方法完全一样
+ def self.create path, &block
+ self.write path, &block
end
- # Example: address = "Sheet1?a1:f5"
+ #= 作用 读xls文件中的内容
+ #= 示例 Ld::Excel.read "Sheet1?A1:B2"
+ #= 示例 Ld::Excel.read "Sheet1?A1:B2+C,D"
+ #= 示例 Ld::Excel.read "Sheet1?A1:B2+C,D,1,2"
+ #= 返回 二维数组
def read params, show_location = false
-
case params.class.to_s
when 'String'
shett_name, scope = params.split('?')
@current_sheet = open_sheet shett_name
@current_sheet.read scope, show_location
@@ -48,32 +65,54 @@
@current_sheet = open_sheet params[:sheet]
@current_sheet.read params, params[:location]
end
end
+ #= 作用 与read方法相同(但会多返回坐标数据)
+ #= 返回 与read方法相同(但会多返回坐标数据)
+ #= 示例 与read方法相同(但会多返回坐标数据)
+ def read_with_location params
+ read params, true
+ end
- # 保存文件
+ #= 作用 如果xls文件内容有改变,可以刷新(会重新open一次,但这个方法不需要再传入参数了)
+ #= 参数 无需参数
+ #= 返回 Ld::Excel实例
+ def flush
+ @excel = Ld::Excel.open @path
+ end
+
+ #= 作用 保存数据到一个路径
+ #= 返回 如果创建成功,返回Ld::Excel实例.如果创建失败会返回false(不会导致程序终止)
+ #= 参数1 path 字符串,指定要写的文件路径(最好使用全路径)
def save path
puts "Covers a file: #{path}" if File.exist? path
@excel.write path
puts "Excel save success!"
self
+ rescue
+ puts $!
+ puts $@
+ false
end
def new_sheet name
Ld::Sheet.new @excel, name
end
+ def open_sheet name
+ Ld::Sheet.open @excel, name
+ end
+
def write_sheet sheet_name, &block
sheet = new_sheet sheet_name
block.call sheet
sheet.save
- end
-
- def self.create hash, &block
- excel = Ld::Excel.new
- block.call excel
- excel.save hash[:file_path]
+ true
+ rescue
+ puts $!
+ puts $@
+ false
end
end