使用HSSFWorkbook导出excel文件时碰到clob类型数据导出为空

使用HSSFWorkbook导出excel文件时遇到clob类型数据导出为空
公司给的任务, 要写个程序把数据库里的报表查询出来, 提供一个下载页面, 要求以后数据库字段可能增加, 但程序不变, 做了两天基本实现, 但是最后却遇到一个问题, 有一列数据是clob类型的, 导出来后为空, 下面是我写的导出工具类

public String createExcel(List<String> keys, List<Object[]> values) throws IOException{
String fileName = String.valueOf(System.currentTimeMillis()) + ".xls";
String outputFile = ServletActionContext.getServletContext().getRealPath("/file/export/" + fileName);

HSSFWorkbook wb = new HSSFWorkbook();// 创建Excel文件
HSSFSheet sheet = wb.createSheet();// 创建一个Excel的sheet

HSSFRow row0 = sheet.createRow(0);// 创建第一行, 标题

int totalColumn = keys.size();// 总列数

for (int i = 0; i < totalColumn; i++) {
HSSFCell cell0 = row0.createCell(i, HSSFCell.CELL_TYPE_STRING); // 创建第1行第i个单元格
cell0.setCellValue(keys.get(i)); // 给单元格写入值
}

int length = values.size(); //循环次数
if (length > 0) {
for (int i = 0; i < length; i++) { 
HSSFRow row = sheet.createRow(i+1); // 创建第i+1行, 存放数据
Object[] obj = values.get(i); //查询出来的数据
for (int j = 0; j < totalColumn; j++) {
String cellValue = ""; //存放单元格的值

//第一次循环时候判断每列数据类型
if (i == 0) {
if (obj[j] instanceof String) {
System.out.println("String");
} else if (obj[j] instanceof Integer) {
System.out.println("Integer");
} else if (obj[j] instanceof Double) {
System.out.println("Double");
} else if (obj[j] instanceof Float) {
System.out.println("Float");
} else if (obj[j] instanceof Long) {
System.out.println("Long");
} else if (obj[j] instanceof Clob) {
System.out.println("Clob");
} else {
System.out.println("unknown");
}
}

if (null == obj[j]) //如果值为空, 设置为""
obj[j] = "";
cellValue = obj[j].toString();
HSSFCell cell = row.createCell(j, HSSFCell.CELL_TYPE_STRING);//第i+1行的第j个单元格
cell.setCellValue(cellValue.toString());//给单元格写入值
}
}
}

FileOutputStream fos = new FileOutputStream(outputFile);
wb.write(fos);// 把相应的Excel 工作簿存盘
fos.flush();
fos.close();// 操作结束,关闭文件
System.out.println("excel generate success!" + "\toutputFile");
return fileName;
}


其中两个参数keys是所有列名集合,  values是所有查询出来值的集合, 中间一段判断数据类型的, 测试了几次只有string类型的打印出来, values查询用的是SQLQuery.list()方法,  目前的想法是可以有个办法判断出来obj[j]的值为Clob类型的, 然后可以把Clob类型转换成String存进单元格. 但是不知道getSession().createSQLQuery().list()方法得到的类型都有什么, 有哪位大神知道吗?
------解决思路----------------------
clob取出来不是就是string类型吗?

------解决思路----------------------
你取出来的应该就不对,跟excel没任何关系
------解决思路----------------------
引用:
你取出来的应该就不对,跟excel没任何关系

------解决思路----------------------
引用:
Quote: 引用:

你取出来的应该就不对,跟excel没任何关系

那应该怎么取, 我用的是Hibernate原生sql查询直接select * 的

在hibernate或者jpa里用 原生的sql查询就有点不清楚了,这个还跟数据源有关,跟驱动也有关,最好用hibernate映射lob字段的方式。
------解决思路----------------------
解决就结贴吧,不然问题沉积在列表中。