エクセルシートの方向を右から左に設定できるかしら…JXLApiを使用しています。
前もって感謝します
バウンティは右から左への配置であり、右からの配置ではありません
エクセルシートの方向を右から左に設定できるかしら…JXLApiを使用しています。
前もって感謝します
バウンティは右から左への配置であり、右からの配置ではありません
現在、JXLはこのオプションをサポートしていませんが、JXLを編集して再構築する場合に機能する優れたソリューションがあります。
右から左へのオプションは、WINDOW2レコードと呼ばれるファイルのセクションに保存および定義されます。ここのセクション5.110WINDOW2で定義されているすべてのオプションを確認できます。セクション5.110.2オプションフラグの下で、オプションフラグと右から左へのオプションのマスク値を確認できます。
6 | 0040H | 0 = Columns from left to right | 1 = Columns from right to left
JXLcreateこのクラスの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;
}
...
ご覧のとおり、オプション「アウトラインシンボルの表示」はtrueにハードコーディングされています。これは、マスク(0x80)が常にオプションフラグに追加され、DisplayZeroValuesが特定のSheetSettingsオブジェクト(ゲッターとセッターを含む)の値によって構成できるためです。 。)
プロジェクトを再構築する場合は、次の行を追加して、右から左への設定をハードコーディングできます。
オプション|=0x40; //右から左への列
このコンストラクターに、または構成可能にする場合は、SheetSettings(およびそのゲッターとセッター)に新しいパラメーターを追加し、Window2Recordでそのコンストラクターの右のif句を追加します。
これは手動で行うことができます(Microsoft Officeサポートから)
[Excelのオプション]ダイアログボックスの[右から左]オプションは、新しいワークシートを右から左に配置します。この設定は、現在表示されているワークシートには適用されません。同じブック内でワークシートを右から左および左から右に向けることができます。
- [Microsoft Officeボタン]をクリックし、[Excelのオプション]をクリックします。Excelオプションボタンはどこにありますか?
- [インターナショナル]をクリックします。
- [右から左およびデフォルトの方向]で、[右から左]をクリックし、[OK]をクリックします。
- 新しいワークシートを挿入するか、新しいワークブックを開きます。
- Windowsタスクバー(または表示されている場合は言語バー)で、[言語]アイコンをクリックし、使用する右から左への言語の名前をクリックします。
- テキストの方向を変更する必要がある場合は、[フォントの配置]グループの[データ]タブで[右から左]ボタンをクリックします。
JXLAPIはこの機能をサポートしていないようです。この種の要件により適したApachePoi (javadoc)またはTeamDevのJExcel ( javadoc )を見ることができます。実装は次のようになります。
ポイの方法:
XSSFSheet sheet = workbook.createSheet();
sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true);
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));
}
});
ところで、 JXLでサポートされている国はこれらだけであるため、使用を試みた場合、setExcelRegionalSettings(IL)
または機能しない場合は、次のようになります。setExcelRegionalSettings(IL-JM)
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;
スプレッドシートの作成中に右から左の方向を設定するには:
Jexcelで新しいスプレッドシートを作成する場合:
ワークシートメソッドを呼び出して、ワークシートテンプレートのコピーとして新しいワークシートを作成します。Workbookクラスのメソッドは次のとおりです。
public static WritableWorkbook createWorkbook(java.io.File file,
Workbook in)
throws java.io.IOException
渡されたワークブックのコピーとして、指定されたファイル名で書き込み可能なワークブックを作成します。作成すると、書き込み可能なワークブックの内容を変更できます。
作成後に方向を変更するには:
スプレッドシートが開いているときに実行されるAUTO_OPENというExcelマクロを手動で作成できます。
Application.DefaultSheetDirection = xlRTL
ActiveSheet.DisplayRightToLeft = True
または、JXLを使用してすべての処理を実行し、ファイルを閉じてからVBscript(microsoft.office.interop.excel.dllとのインターフェイス)を実行できます。
Set xl = CreateObject("Excel.application")
xl.Application.Workbooks.Open "yourworkbookpath\yourworkbook.xls"
xl.DefaultSheetDirection = xlRTL
プロセスを介してJavaからスクリプトを実行できます