POI在获取单元格对象时为空,这种情况会在什么情况下为空。因为我的模版当中很多单元格里面是没值的

POI在获取单元格对象时为空,这种情况会在什么情况下为空。因为我的模版当中很多单元格里面是没值的,第1张

(“应用程序/ vndms-EXCEL,字符集= UTF-8”);
?弦乐的真实路径= getServletContext()。了getRealPath(“/”);/ /获取项目的绝对路径
?FileInputStream类myxls =新的文件输入流(真实路径+“gkxlt”);
?POIFSFileSystem FS =新POIFSFileSystem(myxls);
?HSSFWorkbook WB =新HSSFWorkbook(FS);
/ /文件输出流输出=新的文件输出流(“D :/ EXCEL /库存附件。XLS”);
?HSSFSheet表= wbgetSheetAt(3)/ /第三个工作簿(工作簿)
?/ /填充表中,数据从数据库中查询
?HSSFRow row5 = sheetgetRow(4); / /获得第五行的工作簿
?HSSFCell cell54 = row5getCell(3);/ /第四单元的第五行
,?cell54setCellValue(“纳税人名称”);/ /单元分配

import orgapachepoihssfusermodelHSSFCell;
import orgapachepoihssfusermodelHSSFCellStyle;
import orgapachepoihssfusermodelHSSFRow;
import orgapachepoihssfusermodelHSSFSheet;
import orgapachepoihssfusermodelHSSFWorkbook;
import orgapachepoipoifsfilesystemPOIFSFileSystem;
/
@param inputFile 输入模板文件路径
@param outputFile 输入文件存放于服务器路径
@param dataList 待导出数据
@throws Exception
@roseuid:
/
public void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception
{
//用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewbgetSheetAt(1);
//得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheetgetRow(0);

//HSSFSheet timplateSheet = templatewbgetSheetAt(1);
//取得Excel文件的总列数
int columns = templateSheetgetRow((short) 0)getPhysicalNumberOfCells();
Debugprintln("columns is : " + columns);
//创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];
//一次性创建所有列的样式放在数组里
for (int s = 0; s < columns; s++)
{
//得到数组实例
styleArray[s] = templatewbcreateCellStyle();
}
//循环对每一个单元格进行赋值
//定位行
for (int rowId = 1; rowId < dataListsize(); rowId++)
{
//依次取第rowId行数据 每一个数据是valueList
List valueList = (List) dataListget(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++)
{
//依次取出对应与colunmId列的值
//每一个单元格的值
String dataValue = (String) valueListget(columnId);
//取出colunmId列的的style
//模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的单元格对象
//模板单元格对象
HSSFCell templateCell = templateRowgetCell((short) columnId);
//创建一个新的rowId行 行对象
//新建的行对象
HSSFRow hssfRow = templateSheetcreateRow(rowId);
//创建新的rowId行 columnId列 单元格对象
//新建的单元格对象
HSSFCell cell = hssfRowcreateCell((short) columnId);
//如果对应的模板单元格 样式为非锁定
if (templateCellgetCellStyle()getLocked() == false)
{
//设置此列style为非锁定
stylesetLocked(false);
//设置到新的单元格上
cellsetCellStyle(style);
}
//否则样式为锁定
else
{
//设置此列style为锁定
stylesetLocked(true);
//设置到新单元格上
cellsetCellStyle(style);
}
//设置编码
cellsetEncoding(HSSFCellENCODING_UTF_16);
//Debugprintln("dataValue : " + dataValue);
//设置值 统一为String
cellsetCellValue(dataValue);
}
}
//设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//将模板的内容写到输出文件上
templatewbwrite(fOut);
fOutflush();

// *** 作结束,关闭文件
fOutclose();

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13436626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-06
下一篇 2023-08-06

发表评论

登录后才能评论

评论列表(0条)

保存