[]
如果要按像素获取或设置列宽,GcExcel 和 Excel 中的结果可能会有所不同,因为它们都按字符存储列宽。为了解决这个问题,GcExcel 支持测量字宽以计算单个字符宽度的精确像素值。
GcExcel 在其API中提供 IGraphicsInfo 接口,可以实现对单个数字的精确像素值的了解。 IGraphicsInfo接口中的 getDigitWidth 方法根据不同的字体属性(如字体系列、字体大小、字体样式等)测量文本(或字符)。GcExcel API还支持GUI框架,如WPF和Windows窗体。
请参阅以下示例代码,该代码在Excel中计算像素值并正确导出列宽。
public class FakeGraphicsInfo implements IGraphicsInfo {
public double Width;
public int GetDigitWidthCount;
public double setWidth(double i) {
return i;
}
public double getWidth(double i) {
return i;
}
@Override
public double getDigitWidth(TextFormatInfo textFormat) {
GetDigitWidthCount++;
return 1;
}
}
// Create a new workbook
Workbook workbook = new Workbook();
// Create theme
Theme theme = new Theme("custom");
theme.getThemeFontScheme().getMajor().get(FontLanguageIndex.Latin).setName("YouthTouchDemoRegular");
theme.getThemeFontScheme().getMinor().get(FontLanguageIndex.Latin).setName("YouthTouchDemoRegular");
workbook.setTheme(theme);
// Get worksheet
IWorksheet sheet = workbook.getWorksheets().get(0);
FakeGraphicsInfo fakeGraphicsInfo = new FakeGraphicsInfo();
fakeGraphicsInfo.setWidth(8);
workbook.setGraphicsInfo(fakeGraphicsInfo);
sheet.setStandardWidthInPixel(20);
sheet.getColumns().get(0).setColumnWidthInPixel(20);
sheet.getRange(1, 1).setValue("abc");
// Save workbook
workbook.save("MeasureDigitalWidthAccurately.xlsx");
注意:
上面的示例需要WinForms应用程序来构建和运行。
getDigitWidth方法的结果取决于环境。有时,它在不同的计算机上运行时返回不同的结果。