【问题标题】:How to create sheet with right-to-left alignment using Apache POI XSSF如何使用 Apache POI XSSF 创建从右到左对齐的工作表
【发布时间】:2011-07-28 07:17:14
【问题描述】:

我正在尝试使用 Apache POI 在 Excel 文件中创建工作表。

因为它是 Excel 2007,我正在使用 XSSF,我正在寻找一种方法来使工作表从右到左对齐。

在 HSSF 中有一个方法 org.apache.poi.hssf.usermodel.HSSFSheet.setRightToLeft(boolean),但我在 org.apache.poi.xssf.usermodel.XSSFSheet 中找不到它。

我正在使用 Apache POI 3.7

【问题讨论】:

    标签: java apache-poi xssf


    【解决方案1】:

    解决方法:

     XSSFSheet sheet = workbook.createSheet();
     sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true);
    

    来源:http://thread.gmane.org/gmane.comp.jakarta.poi.user/17099/focus=17110

    【讨论】:

      【解决方案2】:

      由于它不存在,您需要做一些工作,抱歉...

      首先,在 Excel 中创建一个从左到右的简单文件。然后,打开一个副本并在excel中将其设置为从右到左,然后保存。现在,解压缩这两个文件(.xlsx 是 xml 文件的 zip),然后比较 xml 以查看设置从右到左时发生的变化(我怀疑它只是 /sheets/sheet1.xml 会改变 BICBW)

      一旦您知道 XML 需要在短期内改变什么,就可以从 POI 中获取低级 CT 对象并使用它们来操作它。例如,您可能会获得 CTWorkSheet,并在其上设置一个标志

      最后,在 POI bugzilla 中报告缺少 setter/getter 的新错误。上传两个样例文件,可以在一个单元测试中使用,并包含更改的 XML 和需要设置的 CT 对象的信息。然后有人可以快速将该功能添加到 POI。如果可以的话,包括一个 XSSFSheet 的补丁也可以做到这一点!

      【讨论】:

      【解决方案3】:

      如果您的工作表对象是 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();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多