Aspose.Cells for Java excel转html,excel转换后隐藏列被显示

excel转换后隐藏列被显示.zip (617.8 KB)
代码:
Workbook workbook = new Workbook(sourceFileName);

WorksheetCollection sheetCollection = workbook.getWorksheets();
int sheetCont = sheetCollection.getCount();
for(int i=0;i<sheetCont;i++){
    sheetCollection.get(i).autoFitColumns();
}

HtmlSaveOptions options = new HtmlSaveOptions();

options.setExportDocumentProperties(false);
options.setExportWorkbookProperties(false);
options.setExportWorksheetProperties(false);
options.setExportSimilarBorderStyle(true);
options.setExportImagesAsBase64(false);
options.setExcludeUnusedStyles(true);
options.setExportHiddenWorksheet(false);
options.setWidthScalable(false);
options.setPresentationPreference(true);

options.setHtmlCrossStringType(HtmlCrossType.CROSS_HIDE_RIGHT);
workbook.save(targetFileName, options);

@xiangma,
我们已观察到此问题并将其记录在我们的数据库中以供进一步调查。 一旦有任何更新可供分享,您将在此处收到通知。

此问题记录为:
CELLSJAVA-43558 - Hidden column not hidden in the converted HTML

@xiangma,

我们进一步评估了您的问题,发现实际上这不是 API 的问题,而是由于您的以下代码段造成的:

WorksheetCollection sheetCollection = workbook.getWorksheets();
int sheetCont = sheetCollection.getCount();
for(int i=0;i<sheetCont;i++){
sheetCollection.get(i).autoFitColumns();
}

请注意,当您自动调整列时,将显示隐藏的列。 这是 MS Excel 的行为,与 Aspose.Cells API 无关。 根据您的需要,您不应自动调整工作表中的隐藏列。 请尝试更新后的代码段,它在我测试时按预期工作正常:
例如
示例代码:

Workbook workbook = new Workbook(sourceFileName);

WorksheetCollection sheetCollection = workbook.getWorksheets();
        int sheetCont = sheetCollection.getCount();
        for(int i=0;i<sheetCont;i++)
        {
            int maxCol = sheetCollection.get(i).getCells().getMaxColumn();
                    for ( int j = 0; j < maxCol; j++ )
                    {
                        if  (!sheetCollection.get(i).getCells().isColumnHidden(j))
                        {
                            sheetCollection.get(i).autoFitColumn(j);
                        }
                    }
                }

HtmlSaveOptions options = new HtmlSaveOptions();

options.setExportDocumentProperties(false);
options.setExportWorkbookProperties(false);
options.setExportWorksheetProperties(false);
options.setExportSimilarBorderStyle(true);
options.setExportImagesAsBase64(false);
options.setExcludeUnusedStyles(true);
options.setExportHiddenWorksheet(false);
options.setWidthScalable(false);
options.setPresentationPreference(true);

options.setHtmlCrossStringType(HtmlCrossType.CROSS_HIDE_RIGHT);
workbook.save(targetFileName, options);

如果您仍然发现任何问题,请告诉我们,我们会尽快检查。

@xiangma,
请使用以下代码进行测试:

    Workbook workbook = new Workbook(filePath + "excel转换后隐藏列被显示.xlsx");
    WorksheetCollection sheetCollection = workbook.getWorksheets();
    AutoFitterOptions autoFitterOptions = new AutoFitterOptions();
    //Add this line to ignore hidden columns when automatically adjusting column widths
    autoFitterOptions.setIgnoreHidden(true);
    
    int sheetCont = sheetCollection.getCount();
    for(int i=0;i<sheetCont;i++){
        sheetCollection.get(i).autoFitColumns(autoFitterOptions);
    }

    HtmlSaveOptions options = new HtmlSaveOptions();

    options.setExportDocumentProperties(false);
    options.setExportWorkbookProperties(false);
    options.setExportWorksheetProperties(false);
    options.setExportSimilarBorderStyle(true);
    options.setExportImagesAsBase64(false);
    options.setExcludeUnusedStyles(true);
    options.setExportHiddenWorksheet(false);
    options.setWidthScalable(false);
    options.setPresentationPreference(true);
    options.setHiddenColDisplayType(HtmlHiddenColDisplayType.HIDDEN);
    options.setHtmlCrossStringType(HtmlCrossType.CROSS_HIDE_RIGHT);

    workbook.save(filePath + "out_java.html", options); 

你可以试试吗?