Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XSSFWorkbook转换为SXSSFWorkbook APACHE POI时出现问题_Java_Excel_Apache Poi_Xssf_Hssfworkbook - Fatal编程技术网

Java 将XSSFWorkbook转换为SXSSFWorkbook APACHE POI时出现问题

Java 将XSSFWorkbook转换为SXSSFWorkbook APACHE POI时出现问题,java,excel,apache-poi,xssf,hssfworkbook,Java,Excel,Apache Poi,Xssf,Hssfworkbook,我正在尝试将xssfWorkbook文件转换为SXSSF文件,因为我正在生成一个大报告,但问题是我无法转换,我目前正在尝试的就是这个示例 public void export(Workbook hssfWorkbook, Map<String, Object> model) throws Exception { XSSFWorkbook workbook = (XSSFWorkbook)hssfWorkbook; Sheet sheet = workbook.getS

我正在尝试将xssfWorkbook文件转换为SXSSF文件,因为我正在生成一个大报告,但问题是我无法转换,我目前正在尝试的就是这个示例

public void export(Workbook hssfWorkbook, Map<String, Object> model) throws Exception {
    XSSFWorkbook workbook = (XSSFWorkbook)hssfWorkbook;
    Sheet sheet = workbook.getSheet(this.excelSheetName);
    try {
    this.initCommonCellStyles(workbook);
    List<ItemsToBillReport> itemsObject= (List<ItemsToBillReport>)model.get("the model name");

    CellStyle boldCellStyle = workbook.createCellStyle();
    this.setCellStyleBoldFont(workbook, boldCellStyle);
    new HSSFColor.GREY_40_PERCENT();
    boldCellStyle.setFillForegroundColor(GREY_40_PERCENT.index);
    boldCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

    Row bdmRow = sheet.getRow(0);
    Cell bdmCell = bdmRow.getCell(0);
    Bdm bdm = (Bdm)model.get("anoder model");
    if(bdm != null && bdm.getLastName()!=null && bdm.getFirstName()!=null){
        bdmCell.setCellValue("BDM : "+bdm.getLastName()+", "+bdm.getFirstName());
    }else{
        bdmCell.setCellValue("BDM : -");
    }
    bdmCell.setCellStyle(boldCellStyle);

    Row billDateRow = sheet.getRow(1);
    Cell billDateCell = billDateRow.getCell(0);
    String dateFrom = (String)model.get("date from model");
    String dateTo = (String)model.get("dateTo");
    billDateCell.setCellValue("title "+ dateFrom +" TO "+dateTo);
    billDateCell.setCellStyle(boldCellStyle);

    Row dateTimeRow = sheet.getRow(2);
    Cell dateTimeCell = dateTimeRow.getCell(0);
    Format formatter;
    final Date date = new Date();
    formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    String dateString = formatter.format(date);
    dateTimeCell.setCellValue("AS OF : "+dateString);
    dateTimeCell.setCellStyle(boldCellStyle);

    boolean includeFullData = (Boolean)model.get(thisExporter.INCLUDE_FULL_DATA);
    boolean isBriefView = (Boolean)model.get(thisExporter.ATTRIBUTE_ITB_BRIEF_VIEW);

    SXSSFWorkbook wb = new SXSSFWorkbook(workbook,1000);
    sheet = wb.createSheet(this.excelSheetName);
    final int totalColNum = this.printItemsToBillListDetails(sheet, itemsObject, includeFullData, isBriefView);
    //this.autosizeColumns(sheet, totalColNum);
    }catch(Exception e){
        Exception h = e;
    }

}
public void导出(工作簿、工作簿、映射模型)引发异常{
XSSF工作簿=(XSSF工作簿)HSSF工作簿;
Sheet Sheet=workbook.getSheet(this.excelSheetName);
试一试{
此.initCommonCellStyles(工作簿);
List itemsObject=(List)model.get(“模型名”);
CellStyle boldCellStyle=workbook.createCellStyle();
此.setCellStyleBoldFont(工作簿,boldCellStyle);
新HSSFColor.灰色(百分之四十);
boldCellStyle.setFillForegroundColor(灰色40%索引);
boldCellStyle.setFillPattern(CellStyle.SOLID\u前景);
行bdmRow=sheet.getRow(0);
单元格bdmCell=bdmRow.getCell(0);
Bdm Bdm=(Bdm)model.get(“阳极模型”);
如果(bdm!=null&&bdm.getLastName()!=null&&bdm.getFirstName()!=null){
setCellValue(“BDM:+BDM.getLastName()+”,“+BDM.getFirstName());
}否则{
setCellValue(“BDM:-”);
}
bdmCell.setCellStyle(boldCellStyle);
行billDateRow=sheet.getRow(1);
单元格billDateCell=billDateRow.getCell(0);
String dateFrom=(String)model.get(“dateFrom model”);
String dateTo=(String)model.get(“dateTo”);
billDateCell.setCellValue(“标题“+dateFrom+”到“+dateTo”);
billDateCell.setCellStyle(boldCellStyle);
行dateTimeRow=sheet.getRow(2);
单元格dateTimeCell=dateTimeRow.getCell(0);
格式格式化程序;
最终日期=新日期();
格式化程序=新的SimpleDataFormat(“MM/dd/yyyy HH:MM:ss”);
String dateString=formatter.format(日期);
dateTimeCell.setCellValue(“截至:“+dateString”);
dateTimeCell.setCellStyle(boldCellStyle);
布尔includeFullData=(布尔)model.get(thisExporter.INCLUDE\u FULL\u DATA);
布尔值isBriefView=(布尔值)model.get(thisExporter.ATTRIBUTE\u ITB\u BRIEF\u视图);
SXSSFWorkbook wb=新的SXSSFWorkbook(工作簿,1000);
sheet=wb.createSheet(this.excelSheetName);
final int totalColNum=this.printItemsToBillListDetails(工作表、itemsObject、includeFullData、isBriefView);
//这个.autosizeColumns(sheet,totalColNum);
}捕获(例外e){
例外情况h=e;
}
}
正如你所看到的,我用一个模板文件生成报告,因为一开始有一些数据,当我试图在Begging转换为SXSSF时,这是无法完成的,因为如果我理解正确,SXSSF必须在一个空白处写入,因为这是一个模板,它无法在那里写入

因此,我尝试在第一行之后转换,但没有打印任何内容,它会生成第一行信息,但在写入数据时,它不会写入任何内容,因此,如何使用我的示例这样的模板转换ot SXSSF


谢谢您的时间,我就是找不到答案。

您的问题在于提供的代码不完整。它包含了很多未知的部分,没有人能够复制你正在尝试做的事情。在问题中明确我们需要代码的原因。但是从您的描述和代码部分,我怀疑您没有真正理解什么是
sxsfworkbook wb=new sxsfworkbook(工作簿,1000)正在执行。它从给定的
XSSF工作簿创建
SXSSFWorkbook
。然后,此
SXSSFWorkbook
已包含给定
XSSFWorkbook工作簿的所有部分。无法在
SXSSFWorkbook
中访问已存在的部分,但它们已存在。并且可以在
SXSSFWorkbook
中添加新的部分(图纸、行、单元格)。因此,如果创建过程中的代码运行正常,则名为
this.excelSheetName
的图纸必须已经存在于
SXSSFWorkbook wb
中。但在此之后,您将使用
sheet=wb.createSheet(this.excelSheetName)创建新的工作表。不迟于现在必须抛出异常,因为工作簿不能包含两个同名的工作表。但我怀疑您根本没有得到异常通知,因为您的
catch
部件对它得到的异常没有任何作用。所以,也许你的代码的第一部分也抛出了异常,但你对此一无所知。因此,首先,您应该使用
catch
块中的
e.printStackTrace()
在某处打印异常堆栈跟踪。是的,我的catch不对,我得到了您告诉我的,但是,我如何使用模板转换为SXSSF?