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