`

ruby用WIN32OLE读取excel文件

阅读更多

最近需要用ruby读取excel文件,网友有很多包,但是多少都会出现些问题,而且读取效率也不是很高。后来在论坛上看到有说用WIN32OLE读取excel文章,然后就试了一下。发现效果还不错。但是缺点是无法自动结束excel程序。
所以没回执行完后 杀掉进程即可:system("taskkill /f /im excel.exe")

  require 'win32ole'
  require 'date'
  require 'win32api'

  def excelReader()
  excel = WIN32OLE.new("excel.application")
  excel.visible = false
  filepath="D:\\auto_work\\Book1.xls" #路径用两斜杠
  workbook = excel.workbooks.open(filepath)
  worksheet=workbook.worksheets(1)
  #worksheet=workbook.worksheets("sheet name") 打开表名
  #读取excel文件
  return_data=[]
  config_data=[]
  config_data1=[]
  taix_date=[]
  taix_from=[]
  taix_to=[]
  taix_km=[]
  taix_fee=[]
  taix_reason=[]
  row=3
  13.times do
    #读取单元格数据赋给数组
    config_data << worksheet.range("b#{row}").value.to_s
    row+=1
  end
  row=6
  return_data<<config_data
   8.times do
    #读取单元格数据赋给数组
    config_data1 << worksheet.range("c#{row}").value.to_s
    row+=1
  end
  row=2
  return_data<<config_data1
  while worksheet.range("d#{row}").value
    #读取出租车详细日期
    taix_date << worksheet.range("d#{row}").value.strftime("%Y-%m-%d")
    row+=1
  end
  row=2
  return_data<<taix_date
  while worksheet.range("e#{row}").value
    #读取单元格数据赋给数组
    taix_from << worksheet.range("e#{row}").value.to_s
    row+=1
  end
  row=2
  return_data<<taix_from
  while worksheet.range("f#{row}").value
    #读取单元格数据赋给数组
    taix_to << worksheet.range("f#{row}").value.to_s
    row+=1
  end
  row=2
  return_data<<taix_to
  while worksheet.range("g#{row}").value
    #读取单元格数据赋给数组
    taix_km << worksheet.range("g#{row}").value.to_s
    row+=1
  end
  row=2
  return_data<<taix_km
  while worksheet.range("h#{row}").value
    #读取单元格数据赋给数组
    taix_fee << worksheet.range("h#{row}").value.to_s
    row+=1
  end
  row=2
  return_data<<taix_fee
  while worksheet.range("i#{row}").value
    #读取单元格数据赋给数组
    taix_reason << worksheet.range("i#{row}").value.to_s
    row+=1
  end
  return_data<<taix_reason
  return return_data
  excel.close
  system('taskkill -f -im excel.exe')
  end

 

分享到:
评论

相关推荐

    win32ole_ruby

    Win32OLE extension library provides an interface to OLE Automation from Ruby. Here is a sample script: require 'win32ole' application = WIN32OLE.new('Excel.Application') application.visible = TRUE...

    以ole方式读取excel文件

    3. 使用OLE读取Excel文件:要以OLE方式读取Excel文件,首先需要在编程环境中导入相关的库或模块,例如在VBScript、VBA或.NET框架中的`Microsoft.Office.Interop.Excel`。然后,你可以创建一个Excel Application对象...

    Perl中使用Win32_OLE模块读写Excel的方法1

    1. **初始化**: 使用Win32::OLE模块加载Excel应用程序,并创建一个新的Excel实例。 ```perl use Win32::OLE; my $excel = Win32::OLE-&gt;new('Excel.Application', 'Quit'); ``` 2. **打开或创建工作簿**:通过Excel...

    delphi7如何读取excel文件

    在本文中,我们将介绍使用 OLE 和 Excel Application 读取 Excel 文件的方法。 使用 OLE 读取 Excel 文件 使用 OLE(Object Linking and Embedding)读取 Excel 文件是一种常见的方法。OLE 允许 Delphi 应用程序与...

    三种ASP.NET读取Excel文件的方法浅析(含完整代码)

    #### 方法一:使用OleDB读取Excel文件 **概述** 本文档介绍了一种通过OleDB访问Excel文件的方式,将其作为数据源来读取其中的数据。这种方法适用于Excel文件版本为97至2003之间的格式(.xls)。使用此方法时,需要...

    win32ole mapi开发

    在Ruby编程中,利用`Win32OLE`库可以创建一个与Outlook的连接,执行诸如读取、编写和发送邮件,管理联系人,甚至控制Outlook窗口等任务。 文件列表中的几个`.mht`文件很可能包含了使用Ruby论坛中讨论的关于这些主题...

    使用libxl库读取excel文件

    在程序中读取excel文件比如XLS和XLSX,方法有很多,比如ADO,OLE,ODBC等方式。但是这些方法要么依赖于平台,要么读取速度慢,有的甚至需要电脑本身装有excel程序。 但是有一个付费的商业软件库Libxl,属于轻量化的...

    C# 读取EXCEL文件的三种经典方法.docx

    以下是一个简单的示例,展示如何使用OleDb来读取Excel文件: ```csharp public DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Extended ...

    OLEDB读取Excel、csv出现字符串截断、丢失原因及其解决方案

    汽车产业链平台的开发使用的开发工具为VS.NET,使用的语言是C#,在开发的过程中发现使用Microsoft.Jet.OLEDB.4.0读取数据会出现当某一字段内分别含有文本和数字的混合数据时,某一类型的数据会产生丢失。本文就对此...

    C#读取加密Excel文件

    C# 读取加密的Excel 文件; 有源码,VS2010开发。 采用的是微软的Microsoft.Office.Interop.Excel, V14.0,来读取加密后的Excle文件。 不是采用第三方控件NPOI读取加密的Excel文件。 开始研究NPOI读取加密的Excel文件...

    Win32::OLE模块

    使用Win32::OLE与Excel交互 在Perl脚本中,导入Win32::OLE模块并创建一个新的Excel实例,你可以这样开始: ```perl use Win32::OLE; my $Excel = Win32::OLE-&gt;new('Excel.Application', 'Quit'); ``` 这行代码会...

    Win32::OLE

    通过阅读上述书籍,结合实践,读者可以更深入地理解Perl及其在实际项目中的应用,特别是在使用Win32::OLE模块进行Excel操作方面。此外,网络上还有大量的教程和示例代码,可以帮助开发者快速上手并解决实际问题。

    C# .net 读取excel文件所有表单(sheet)的名字,.txt文件,调用方法,使用需要引入System.Data.OleDb命名空间

    本文详细介绍了如何使用C# .NET读取Excel文件中的所有Sheet名称。通过上述方法,开发者可以轻松地获取到Excel文件中Sheet的列表,这对于后续的数据处理非常有帮助。同时,也强调了需要注意的几个关键点,以确保代码...

    C++读取Excel数据

    在C++中,读取Excel数据通常涉及到使用OLE Automation(对象链接和嵌入自动化)技术,这是一种允许不同应用程序之间交互的方式。在这个特定的例子中,我们使用Microsoft Visual Studio 2003 MFC(Microsoft ...

    OLE读取EXCEL(VS2015+QT)

    总之,通过OLE技术在VS2015中结合QT,我们可以实现高效且灵活的Excel文件读取。这种方式对于那些需要大量处理Excel数据的项目来说,既节省了资源,又提高了程序的响应速度。在实际应用中,开发者应根据项目需求和...

    刷博客小程序 net/http URI win32ole操作ie

    如果`runblog.rb`是Ruby脚本,我们可以假设它利用了`net/http`库来处理HTTP请求,并可能使用了`win32ole`来控制IE浏览器完成更复杂的交互,如登录博客网站、浏览页面或执行特定的用户操作。 总之,这个“刷博客小...

    MFC读取excel文件

    首先,读取Excel文件在MFC中通常涉及到Microsoft的OLE Automation技术,它允许我们与其他支持Automation的程序(如Excel)进行交互。你需要在项目中引用`#import`指令,导入`mscomctl.lib`和`msado15.dll`库,以便...

    win32ole-mapi

    在提供的文件"outlook code.mht"和"outlook code.txt"中,可能包含具体的Python代码示例,演示了如何使用win32ole与Outlook的MAPI接口进行交互。这些代码通常会展示如何创建邮件、设置属性,以及发送邮件等操作。 ...

    Delphi使用OLE对象读入Excel XLS文件

     一个基于Delphi语言编写的OLE自动化控件器,让Delphi支持打开.xls格式的Excel表格文件,简要概述一下实现步骤:建立OLE对象、使Excel可见,并将本程序最小化,以观察Excel的运行情况、使Excel窗口不可见、注意:...

    C# WinFORM 窗体小程序 oledb技术读取EXCEL表格并展示

    这个项目就是一个典型的示例,它演示了如何使用OleDb技术来读取Excel表格的数据,并在窗体上通过DataGridView控件进行展示。下面将详细讲解这个过程涉及的知识点。 首先,`OleDb`(OLE DB)是微软提供的一种数据...

Global site tag (gtag.js) - Google Analytics