在csdn和一些其他的技术论坛逛得久了,越来越有一种想安定下来的感觉,于是在博客园找到一片栖身之处,决定在这里长期驻扎,每每写下自己技术之路上的一些问题和见解思路,希望对爱好技术的朋友和自己以后的开发有一些帮助,由于工作很忙,可能不是总是时时会来这里驻足,希望广大同行们一起探讨,由于是博客的开篇,我先从基础做起,贴一份Domino中导入数据到excel的程序实例,如果大家有更好更方便更快捷的方法,希望指教。
我用了两种方法来实现数据的到处,即JavaScript和lotusscript方法。
一、JavaScript方法:(我是直接用的复制的方式)
Code
function toexcel(tableid)
{
var curTbl = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();oXL.Visible = true;
}
二、lotusscript方法:
首先可用先自己定义一个excel的类,类包括一些必要的属性和自身的一些方法,定义如下:
Code
Class Excelreport
Private xlApp As Variant
Sub new()
Set xlApp = CreateObject("Excel.application")
xlApp.Workbooks.Add
xlApp.Visible = True
End Sub
Function saveFile(strFilePath As String)
xlApp.ActiveWorkbook.SaveAs( strFilePath )
End Function
Function insertData(intSheet As Integer,row As Integer,column As Integer,value As String)
xlApp.Workbooks(1).Worksheets( intSheet ).Cells( row , column ).Value = value
End Function
Function getData( intSheet As Integer , row As Integer , column As Integer ) As String
getData = xlApp.Workbooks(1).Worksheets( intSheet ).Cells( row , column ).Value
End Function
Function doQuit
xlApp.Quit
Set xlApp = Nothing
End Function
代码
Sub Unionexcel(intSheet As Integer,strRow1 As Integer ,strCols1 As Integer,strRow2 As Integer ,strCols2 As Integer)
%REM
函数说明:合并excel单元格
参数说明:intSheet:excel的sheet
strRow1:行数1 2 3
strCols1:列名,1 2 3..
strRow2:行数1 2 3
strCols2:列名,1 2 3..
%END REM
Dim obj As Variant
Set obj=xlApp.Workbooks(1).Worksheets( intSheet )
xlApp.Range(obj.Cells(strRow1,strCols1), obj.Cells(strRow2,strCols2)).MergeCells = True
End Sub
End Class
然后用这个类去创建一个具体的excel对象,并运用类自带的方法向这个对象中添加你想要添加的数据。代码如下:
Code
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim item As NotesItem
Dim doc As NotesDocument
Dim newdoc As NotesDocument
Dim array() As String
Dim i As Integer
Dim count As Integer
Dim client As String
Dim linker As String
Dim kehu As String
Dim a,b As Integer
Set doc=s.DocumentContext
Set db=s.CurrentDatabase
Set view=db.GetView("XXXX")
Set item=doc.GetFirstItem("XXXXX")
Set date1 = item.DateTimeValue
Dim report As Excelreport '定义为Excelreport类型
Set report = New Excelreport '创建一个实例对象
'中间省略一些判断导入数据的代码
Call report.insertData(1,a+1,b,client) '运用自定义excel类的方法添加数据
Call report.insertData(1,a+1,b+1,kehu)
Call report.insertData(1,a+2,b,"联系次数")
Call report.insertData(1,a+2,b+1,Cstr(count))
Call report.insertData(1,a+2,b+2,"联系人")
Call report.insertData(1,a+2,b+3,linker)
'Call report.saveFile("C:\kkkk.xls") '运用自定义excel类的方法保存excel文件
'Call report.doQuit '释放excel对象
就是这两个很简单的方法,我个人认为比较有意思。希望有高手能给出更好的解决方法。大家一起探讨。
End Sub