Java 如何使用Apache POI XSSF创建从右向左对齐的图纸
我正在尝试使用ApachePOI在Excel文件中创建一个工作表 因为它是Excel2007,所以我使用XSSF,并且我正在寻找一种方法来使工作表从右向左对齐 在HSSF中有一个方法Java 如何使用Apache POI XSSF创建从右向左对齐的图纸,java,apache-poi,xssf,Java,Apache Poi,Xssf,我正在尝试使用ApachePOI在Excel文件中创建一个工作表 因为它是Excel2007,所以我使用XSSF,并且我正在寻找一种方法来使工作表从右向左对齐 在HSSF中有一个方法org.apache.poi.HSSF.usermodel.HSSFSheet.setRightToLeft(boolean),但我在org.apache.poi.xssf.usermodel.XSSFSheet中找不到它 我正在使用ApachePOI3.7,因为它不在那里,您需要做一些工作,抱歉 首先,在excel
org.apache.poi.HSSF.usermodel.HSSFSheet.setRightToLeft(boolean)
,但我在org.apache.poi.xssf.usermodel.XSSFSheet
中找不到它
我正在使用ApachePOI3.7,因为它不在那里,您需要做一些工作,抱歉 首先,在excel中创建一个从左到右的简单文件。然后,在excel中打开副本并将其设置为从右向左,然后保存。现在,解压这两个文件(.xlsx是xml文件的压缩文件),并区分xml,以查看设置从右向左时发生了什么变化(我怀疑改变BICBW的只是/sheets/sheet1.xml) 一旦知道XML需要更改的内容,短期内,从POI中获取低级CT对象并使用这些对象对其进行操作。例如,您可以获取CTWorkbench,并在其上设置一个标志 最后,在POI bugzilla中报告缺少setter/getter的新bug。上传两个示例文件,可以在单元测试中使用,并包括有关更改的XML和需要设置的CT对象的信息。然后有人可以快速将该功能添加到POI。如果可以的话,在XSSFSheet中添加一个补丁也可以做到这一点 解决方法:
XSSFSheet sheet = workbook.createSheet();
sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true);
来源:如果图纸对象是XSSFSheet的实例,则可以使用反射
private void setCurrentSheetRtl() {
try {
final Field sh = currentSheet.getClass().getDeclaredField("_sh");
sh.setAccessible(true);
final XSSFSheet shObj = (XSSFSheet) sh.get(currentSheet);
final Method method = shObj.getClass().getDeclaredMethod("getSheetTypeSheetViews");
method.setAccessible(true);
final CTSheetViews ctSheetViews = (CTSheetViews) method.invoke(shObj);
ctSheetViews.getSheetViewArray(0).setRightToLeft(true);
} catch (Exception e) {
e.printStackTrace();
}
}
我收到了POI邮件列表的回复。这比你的建议容易一点:)我看到了你的建议,并提出你:)