如何使用JXL创建具有从右到左对齐的Excel工作表

Ima*_*MIL 13 java jxl right-to-left

我想知道我是否可以将excel表的方向设置为从右到左......我正在使用JXL Api.

提前致谢

赏金是从右到左,而不是右对齐

在此输入图像描述

Ido*_*.Co 8

目前JXL不支持此选项,但如果您愿意编辑和重新构建JXL,我有一个很好的解决方案.

从右到左选项被保存并在名为WINDOW2 record的文件的一部分中定义.你可以看到在零件中定义的所有选项这里在部分窗口2 5.110.在5.110.2选项标志下,您可以看到选项标志和从右到左选项的掩码值:

6 | 0040H | 0 = Columns from left to right | 1 = Columns from right to left
Run Code Online (Sandbox Code Playgroud)

JXL create这个类中的excel文件的一部分--Window2Record.

在构造函数方法中,您可以看到一些值是可配置的,一些是硬编码的:

  public Window2Record(SheetSettings settings)
  {
    super(Type.WINDOW2);

    int options = 0;

    options |= 0x0; // display formula values, not formulas

    if (settings.getShowGridLines())
    {
      options |= 0x02;
    }

    options |= 0x04; // display row and column headings

    options |= 0x0; // panes should be not frozen

    if (settings.getDisplayZeroValues())
    {
      options |= 0x10;
    }

    options |= 0x20; // default header

    options |= 0x80; // display outline symbols

    // Handle the freeze panes
    if (settings.getHorizontalFreeze() != 0 ||
        settings.getVerticalFreeze() != 0)
    {
      options |= 0x08;
      options |= 0x100;
    }
...
Run Code Online (Sandbox Code Playgroud)

如您所见,选项"显示轮廓符号"被硬编码为真,因为它的掩码(0x80)总是添加到选项标志,而DisplayZeroValues可以通过给定的SheetSettings对象(具有getter和setter)的值进行配置. .)

如果您愿意重建项目,可以通过添加以下行来硬编码从右到左的设置:

options | = 0x40; //从右到左的列

对于此构造函数,或者如果您希望它可配置,请向SheetSettings(以及它的getter和setter)添加一个新参数,并在Window2Record中为它添加正确的if子句.


Öme*_*alı 7

这可以手动完成(从Microsoft Office支持)

"Excel选项"对话框中的"从右到左"选项从右到左定向新工作表.该设置不适用于当前显示的工作表.您可以在同一工作簿中将工作表从右到左,从左到右.

  1. 单击"Microsoft Office按钮",然后单击"Excel选项".Excel选项按钮在哪里?
  2. 单击国际.
  3. 在"从右到左"和"默认"方向下,单击"从右到左",然后单击"确定".
  4. 插入新工作表,或打开新工作簿.
  5. 在Windows任务栏中(或在语言栏上,如果可见),单击"语言"图标,然后单击要使用的从右向左语言的名称.
  6. 如果需要更改文本的方向,请单击"字体对齐"组中"数据"选项卡上的"从右到左"按钮.

似乎JXL api不支持此功能.您可以查看Apache Poi(javadoc)或TeamDev的JExcel(javadoc),它更适合此类要求.实施将类似于:

Poi方式:

XSSFSheet sheet = workbook.createSheet();
sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true);
Run Code Online (Sandbox Code Playgroud)

通过Jexcel:

 final Application application = ...;
        application.getOleMessageLoop().doInvokeAndWait(new Runnable() {
            public void run() {
                _Application app = application.getPeer();
                app.setDefaultSheetDirection(new Int32(LocaleID.LOCALE_USER_DEFAULT), new Int32(Constants.xlRTL));
            }
        });
Run Code Online (Sandbox Code Playgroud)

关于POI:1,2,3.

顺便说一下,如果您尝试使用setExcelRegionalSettings(IL)setExcelRegionalSettings(IL-JM)不能使用,因为这些是JXL唯一支持的国家/地区:

public static final jxl.biff.CountryCode USA;
public static final jxl.biff.CountryCode CANADA;
public static final jxl.biff.CountryCode GREECE;
public static final jxl.biff.CountryCode NETHERLANDS;
public static final jxl.biff.CountryCode BELGIUM;
public static final jxl.biff.CountryCode FRANCE;
public static final jxl.biff.CountryCode SPAIN;
public static final jxl.biff.CountryCode ITALY;
public static final jxl.biff.CountryCode SWITZERLAND;
public static final jxl.biff.CountryCode UK;
public static final jxl.biff.CountryCode DENMARK;
public static final jxl.biff.CountryCode SWEDEN;
public static final jxl.biff.CountryCode NORWAY;
public static final jxl.biff.CountryCode GERMANY;
public static final jxl.biff.CountryCode PHILIPPINES;
public static final jxl.biff.CountryCode CHINA;
public static final jxl.biff.CountryCode INDIA;
public static final jxl.biff.CountryCode UNKNOWN;
Run Code Online (Sandbox Code Playgroud)