Ruby通过win32ole调用操作系统接口

1 Word 

require 'win32ole'

word = WIN32OLE.new('Word.Application')     
word.visible=true  #??????  
word.Documents.Add()     
for i in(0..100)     
  word.Selection.Font.Size=12     
  word.Selection.Font.ColorIndex = 2     
  word.Selection.TypeText("Word with Ruby \n")     
end    
word.DefaultSaveFormat     
word.Documents.close()   
 

 

2 Outlook 

require 'win32ole'  

outlook = WIN32OLE('Outlook.Application')  
message = outlook.CreateItem(0)  
message.Subject = 'Subject line here'  
message.Body = 'This is the body of your message.'  
message.To = 'xiaofan2350@yahoo.com.cn'  
message.Attachments.Add('c:\really\one.txt', 1)  
message.Send  
 

3 Excel 

require 'win32ole' 

excel = WIN32OLE.new('Excel.Application')  
book = excel.workbooks.add  
sheets = book.worksheets(1)  
cells = sheets.cells("A1:A5")  
cells.each do |cell|  
  cell.value = 10  
end  

 

require 'win32ole'     

excel = WIN32OLE.new("Excel.Application")            
excel.Visible = true 
excel.WorkBooks.Open("d:\\really.xls")  
worksheet = excel.ActiveWorkbook.WorkSheets(1)     
# Output the sheet count of the current work book.  
rows = worksheet.UsedRange.Rows  
worksheet.Range('A1:D1').value = ['North','South','East','West']  
worksheet.Range('A2')['value'] = "really"  
worksheet.Range('B2')['value'] = "notreally"  
worksheet.Range('C2')['value'] = "javaeye"  
worksheet.Range('D2')['value'] = "notreally.javaeye.com"  
excel.ActiveWorkbook.WorkSheets.add({'count'=>1, 'after'=>worksheet})  
excel.ActiveWorkbook.Close 
excel.Quit()    

 

4 IE 

require "win32ole" #???  

ie = WIN32OLE.new('InternetExplorer.Application')  
ie.visible = true
ie.navigate('http://www.ask123.net')  
 

 

参考: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/win32ole/rdoc/

 

以下是一个简单的使用 C语言 WIN32 ole2 读取 Excel表格顺序的实例: ```c #include <windows.h> #include <ole2.h> #include <stdio.h> int main() { HRESULT hr; LPDISPATCH pXL = NULL; LPDISPATCH pBooks = NULL; LPDISPATCH pBook = NULL; LPDISPATCH pSheets = NULL; LPDISPATCH pSheet = NULL; VARIANT vResult; VARIANT vFilename; VARIANT vUpdateLinks; // 初始化 COM CoInitialize(NULL); // 创建 Excel 应用程序对象 hr = CoCreateInstance(CLSID_Application, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&pXL); if(FAILED(hr)) { printf("CoCreateInstance failed\n"); return hr; } // 设置是否显示 Excel 窗口 pXL->lpVtbl->put_Visible(pXL, VARIANT_FALSE); // 打开 Excel 文件 VariantInit(&vFilename); vFilename.vt = VT_BSTR; vFilename.bstrVal = SysAllocString(L"C:\\test.xls"); VariantInit(&vUpdateLinks); vUpdateLinks.vt = VT_BOOL; vUpdateLinks.boolVal = VARIANT_FALSE; pBooks = pXL->lpVtbl->Workbooks(pXL); pBook = pBooks->lpVtbl->Open(pBooks, vFilename, 0, VARIANT_FALSE, NULL, NULL, NULL, NULL, NULL, NULL, vUpdateLinks, NULL, NULL, NULL); SysFreeString(vFilename.bstrVal); // 获取所有工作表 pSheets = pBook->lpVtbl->Worksheets(pBook); // 获取工作表数量 VariantInit(&vResult); vResult.vt = VT_I4; vResult.lVal = 0; pSheets->lpVtbl->get_Count(pSheets, &vResult); // 逐个读取工作表 for(int i = 1; i <= vResult.lVal; i++) { // 获取指定工作表 VariantInit(&vResult); vResult.vt = VT_I4; vResult.lVal = i; pSheet = pSheets->lpVtbl->Item(pSheets, vResult); // 获取工作表名称 VariantInit(&vResult); pSheet->lpVtbl->get_Name(pSheet, &vResult); // 打印工作表名称 printf("Sheet %d: %S\n", i, vResult.bstrVal); // 释放 Variant 对象 VariantClear(&vResult); // 释放工作表对象 pSheet->lpVtbl->Release(pSheet); } // 释放工作表集合对象 pSheets->lpVtbl->Release(pSheets); // 关闭 Excel 文件 pBook->lpVtbl->Close(pBook, VARIANT_TRUE, NULL, NULL); pBooks->lpVtbl->Release(pBooks); // 释放 Excel 应用程序对象 pXL->lpVtbl->Quit(pXL); pXL->lpVtbl->Release(pXL); // 反初始化 COM CoUninitialize(); return 0; } ``` 这个实例演示了如何使用 C语言 WIN32 ole2 读取 Excel表格顺序。它使用了 Microsoft Office 的 COM 接口来操作 Excel 文件,通过逐个读取工作表并打印工作表名称来展示了如何遍历 Excel 文件中的工作表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值