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);
你可以试试吗?