Word
1、jacob JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。”
需要用到的文件主要有jacob.jar 和jacob.dll
过程:
1、 项目中引入jacob.jar【程序中要用到jar文件中的class文件】
2、 将jacob.dll放入系统jre/bin目录下:如果使用Eclipse的默认jdk,放入C:/Program Files/MyEclipse 6.5/jre/bin,如果用系统中安装的jdk,则放入C:/Program Files/Java/jdk1.5.0_04/jre/bin
3、 网上有很多资料说将放入系统文件夹C:/WINDOWS/system32中,我试了,不需要
注:自己在操作过程中遇到的问题解决:
1、 程序找不到动态链接库?
解决方法: a、检查文件的jdk目录下的jre/bin中有没有dll文件
b、确认自己机子上确实安装了offic2003,我在操作的时候机子安装的是2007,纠结了好长时间
2、可能涉及的问题:
a、动态链接库的版本和windows的版本不一致
b、如果确实要将动态链接库文件放入C:/WINDOWS/system32下,就需要注册dll文件,具体方法为:regsvr32 jacob.dll,我在操作的时候发现系统提示:已经加载jacob.dll文件,但没有找到DllRegisterServer输入点。无法注册文件。查询了很多资料,这和dll问价的类型有关系,有些文件时允许注册的,有些不能。
Excel
1、jacob 同word处理
2、jxl
3、poi
Poi中的具体方法:
HSSFWorkbook wb = new HSSFWorkbook(); //创建文件
HSSFSheet sheet = wb.createSheet();//创建sheet
wb.setSheetName(0, filename); //设置sheet名称,0为sheet编号,默认从0开始
HSSFRow row = null;
HSSFCell cell = null;
row = sheet.createRow(0); //0为行号
cell = row.createCell((short) 0); //0为列号
几个有用的方法:
1、得到第i个sheet中的数据,返回类型为List<List>
public static List getDatasInSheet(HSSFWorkbook workbook, int sheetNumber,
int firstrow) {
List<List> result = new ArrayList<List>();
HSSFSheet sheet = workbook.getSheetAt(sheetNumber);
int rowCount = sheet.getLastRowNum();
if (rowCount < 1) {
return result;
}
for (int rowIndex = firstrow; rowIndex <= rowCount; rowIndex++) {
HSSFRow row = sheet.getRow(rowIndex);
if (null != row) {
List<Object> rowData = new ArrayList<Object>();
int cellCount = row.getLastCellNum();
int nullnum = 0;
for (short cellIndex = 0; cellIndex < cellCount; cellIndex++) {
HSSFCell cell = row.getCell(cellIndex);
Object cellStr = getCellString(cell);
rowData.add(cellStr);
}
result.add(rowData);
}
}
return result;
}
2、 得到cell中的内容
private static Object getCellString(HSSFCell cell) {
// TODO Auto-generated method stub
Object result = null;
if (cell != null) {
// 单元格类型:Numeric:0,String:1,Formula:2,Blank:3,Boolean:4,Error:5
int cellType = cell.getCellType();
switch (cellType) {
case HSSFCell.CELL_TYPE_STRING:
result = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
result = cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_FORMULA:
result = cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
result = cell.getBooleanCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
result = null;
break;
case HSSFCell.CELL_TYPE_ERROR:
result = null;
break;
default:
System.out.println("枚举了所有类型");
break;
}
}
return result;
}
3、 设置单元格的边框
private static void setCellBorder1(HSSFWorkbook wb,HSSFCell cell){
CellStyle style = wb.createCellStyle();
style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setBorderRight(CellStyle.BORDER_THIN);
style.setBorderTop(CellStyle.BORDER_THIN);
style.setFillBackgroundColor((short)10);
cell.setCellStyle(style);
}