用java代理获取附件输入流EmbeddedObject.getInputStream(),使用开源文件的Java Excel API 来读取excel
jxl.jar的下载地址http://www.andykhan.com/jexcelapi/download.html,lotus8最高支持2.68版本的
代码如下:
import lotus.domino.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import jxl.*;
import jxl.read.biff.BiffException;
/**
*
* @Description TODO
* @author zys
* @ProjectName Test
* @FileName JavaAgent.java
* @date 2008-11-24
*/
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document doc = agentContext.getDocumentContext();
//String CurrUser=doc.getItemValueString("CurrUser");
EmbeddedObject excelEmbeddedObject=null;
String sType = session.getPlatform();
//取得平台类型
// (Your code goes here)
String ServerPath = session.getEnvironmentString("Directory",true);
PrintWriter pw=getAgentOutput() ;
if (!ServerPath.equals(""))
{
ServerPath=getServerPath(ServerPath,sType);
//boolean flag=false;
//File excelFile=null;
//excelFile=getFileByDoc(doc,ServerPath,CurrUser,pw);
excelEmbeddedObject=this.getEmbeddedObjectByDoc(doc,pw);
InputStream excelInputStream=null;
if (excelEmbeddedObject!=null)
excelInputStream=excelEmbeddedObject.getInputStream();
//if (excelFile!=null)
if(excelInputStream!=null)
{
try
{
//导入数据,在此方法中加入导入数据的处理
//ImportDataFromExcel(excelFile,pw,doc);
this.ImportDataFromExcel(excelInputStream,pw,doc,session);
excelInputStream.close();
}catch(Exception e) {
if (excelEmbeddedObject!=null) excelEmbeddedObject.recycle();
/*if(excelFile!=null)
{
flag=excelFile.delete();
if(!flag)
{
System.out.println("附件删除失败");
}
}*/
e.printStackTrace();
}
//flag=excelFile.delete();
//if(!flag)
//{
// System.out.println("附件删除失败");
//}
}
if (excelEmbeddedObject!=null) excelEmbeddedObject.recycle();
}
else
{
pw.println("导出失败,没找到服务器路径");
}
//code end
} catch(Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description TODO
* @param excelInputStream
* @param pw
* @param doc
* @date 2008-12-9 15:17:00
* @author zys
* @return void
*/
public void ImportDataFromExcel(InputStream excelInputStream,PrintWriter pw,Document doc,Session s)
{
int excelRows;//行数
//int excelColumns;//列数
Cell cell1;//单元格对象
Workbook workbook;//Excel对象
DateTime dt=null;
try
{
workbook = Workbook.getWorkbook(excelInputStream);
Database db=s.getAgentContext().getCurrentDatabase();
//Database flowdb=s.getDatabase(db.getServer(),doc.getItemValueString("appName") + "/mbgl.nsf");
//Notes
Document newdoc=null;
Sheet sheet=workbook.getSheet(0);
excelRows=sheet.getRows();
//excelColumns=sheet.getColumns();
System.out.println("excelRows="+excelRows);
String CurrUser=doc.getItemValueString("UserName");
Name notesName=s.createName(CurrUser);
//增加你的代码
//pw.println("");
//pw.println("");
//pw.println("");
//pw.println("");
String ErrorMsg="";
//pw.println("
第"+i+"行第一列为空,没有导入 | "+cell1.getContents()+" | ");//单元格内容
导入完成 |
Sheet sheet=workbook.getSheet(0);
excelRows=sheet.getRows();
excelColumns=sheet.getColumns();
//增加你的代码
pw.println("");
pw.println("");
pw.println("");
pw.println("");
pw.println("
"+cell1.getContents()+" | ");//单元格内容
//}
}
else
{
pw.println( "");
}
}
else
{
pw.println( "");
}
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return excelEmbeddedObject;
}
/**
*
* @Description TODO
* @param doc
* @param serverPath
* @param currUser
* @return
* @date 2008-11-24 17:11:21
* @author zys
* @return File
*/
public File getFileByDoc(Document doc,String serverPath,String currUser,PrintWriter pw)
{
File excelFile=null;
if (doc != null)
{
try
{
if (doc.hasEmbedded())
{
Item it = doc.getFirstItem("$FILE");
String AttachmentName= it.getValueString();
EmbeddedObject obj = doc.getAttachment(AttachmentName);
//System.out.println("it.getText()="+it.getText());
if(isExcelFile(obj.getName()))
{
if (obj != null)
{
obj.extractFile(serverPath+currUser+AttachmentName);
excelFile=new File(serverPath+currUser+AttachmentName);
}
}
else
{
pw.println( "");
}
obj.recycle();
}
else
{
pw.println( "");
}
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return excelFile;
}
/**
*
* @Description TODO
* @param serverPath
* @param sType
* @return
* @date 2008-11-24 9:55:33
* @author zys
* @return String
*/
public String getServerPath(String serverPath,String sType)
{
int serverPathLength=serverPath.length();
String lastChar=serverPath.substring(serverPathLength-1,serverPathLength);
if(sType.equals("UNIX")|| sType.equals("LINUX") || sType.equals("AIX/64"))
{
if (!lastChar.equals("/"))
{
return serverPath+ "/";
}
}
else if(sType.equals("MACINTOSH"))
{
if (!lastChar.equals(":"))
{
return serverPath+ ":";
}
}
else
{
if (!lastChar.equals("//"))
{
return serverPath+ "//";
}
}
return serverPath;
}
/**
*
* @Description TODO
* @param fileName
* @return
* @date 2008-11-24 11:04:38
* @author zys
* @return boolean
*/
public boolean isExcelFile(String fileName)
{
boolean flag=true;
if (fileName.lastIndexOf(".xls")<1)
return false;
int serverPathLength=fileName.length();
String fileType=fileName.substring(serverPathLength-4,serverPathLength);
//System.out.println(fileType);
if (!fileType.equals(".xls"))
{
flag=false;
}
return flag;
}
}