版本:23.8
编程语言:java
问题截图:
image.png (85.4 KB)
源文件:
image.png (85.4 KB)
在将Excel文件转换为PDF时,如果单元格内容显示不全,通常是由于单元格宽度不足或字体设置不当导致的。为了解决这个问题,您可以采取以下措施:
调整列宽:确保在转换之前,Excel中的列宽足够,以容纳单元格中的所有内容。您可以手动调整列宽,或者使用代码自动调整。
设置PdfSaveOptions:在使用Aspose.Cells进行转换时,可以设置PdfSaveOptions的相关属性,例如OnePagePerSheet和AllColumnsInOnePagePerSheet,以确保所有内容都能在PDF中正确显示。
使用默认字体:确保在PdfSaveOptions中设置合适的默认字体,以避免因字体不兼容而导致的内容显示问题。
以下是一个简单的代码示例,展示如何设置这些选项:
import com.aspose.cells.*;
public class ExcelToPdf {
public static void main(String[] args) {
try {
// 加载Excel文件
Workbook workbook = new Workbook("input.xlsx");
// 创建PdfSaveOptions实例
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setOnePagePerSheet(true); // 每个工作表输出为一页
pdfSaveOptions.setAllColumnsInOnePagePerSheet(true); // 所有列输出到一页
// 设置默认字体
pdfSaveOptions.setDefaultFont("Arial");
// 保存为PDF文件
workbook.save("output.pdf", pdfSaveOptions);
} catch (Exception e) {
e.printStackTrace();
}
}
}
请根据您的具体需求调整代码中的参数。通过以上步骤,您应该能够有效解决Excel转换为PDF时内容显示不全的问题。如果您还有其他疑问或需要进一步的帮助,请随时联系我!
顺便问一下,您能否尝试对指定的工作表调用 autoFitRows() 方法,看是否会有所不同?
例如
//获取工作表。
Worksheet worksheet = workbook.getWorksheets().get("MySheet");
//应用自动调整行高以完整显示单元格内容。
worksheet.autoFitRows();
........
如果您仍然遇到问题,请按照我们的要求,将您的模板Excel文件压缩后附加在这里。我们会尽快检查您的问题。
@ZhonghaoSun
通过使用样例文件和以下样例代码在最新版本v25.8上进行测试,我们可以得到正确的结果。请查看附件。 out_java.pdf (86.3 KB)
Workbook wb = new Workbook(filePath + "星矿科技(北京)有限公司_2025-09-04.xlsx");
WorksheetCollection sheets = wb.getWorksheets();
int sheetCount = sheets.getCount();
for (int i = 0; i < sheetCount; i++)
{
Worksheet sheet = sheets.get(i);
sheet.autoFitRows(true);
}
PdfSaveOptions options = new PdfSaveOptions();
options.setOnePagePerSheet(true);
wb.save(filePath + "out_java.pdf", options);
我们建议您尝试使用我们的最新版本:Aspose.Cells for Java 25.8.
如果您仍然发现问题,请分享您的测试代码,以便我们重现问题,我们很快就会检查。
能否通过修改文件方式来兼容
@ZhonghaoSun
可以通过修改文件来满足需求。以下样例代码只调整了设置了自动行高的行。你可以在excel里手动拖动这些行来设置行高,这些行就变成设置了自定义行高的行。
sheet.autoFitRows(true);
请参考相关的API说明。