2011-12-31 8 views
13

Tôi tự hỏi liệu tôi có thể đặt hướng của bảng excel sang phải sang trái hay không ... Tôi đang sử dụng JXL Api.Cách tạo bảng excel với căn chỉnh từ phải sang trái bằng cách sử dụng JXL

cảm ơn trước

Các tiền thưởng là về phải sang trái và không đúng sự liên kết

enter image description here

+0

Chỉ cần một đoán từ bên cạnh tôi, nhưng là phương pháp để đặt thiết lập khu vực của bất kỳ trợ giúp cho bạn ('setExcelRegionalSettings() 'on' WorkbookSettings')? Tôi chưa bao giờ làm việc với 'API' này nên việc tạo một testcase sẽ dễ dàng hơn cho bạn vì nó sẽ là cho tôi. – Aquillo

+0

Tính năng này không khả dụng trong JXL. Tuy nhiên, nếu bạn sử dụng Apache POI thay vào đó, điều này là rất có thể. –

+0

@Imad JAMIL Bạn đã chuyển sang Poi từ JXL chưa? –

Trả lời

7

này có thể được thực hiện bằng tay (from Microsoft Office Support)

The Right-to- tùy chọn bên trái trong hộp thoại Tùy chọn Excel hoặc mới bảng tính từ ri ght sang trái. Cài đặt này không áp dụng cho trang tính hiện được hiển thị. Bạn có thể có các trang tính được định hướng đúng sang trái và trái sang phải trong cùng một sổ làm việc.

  1. Nhấp vào Nút Microsoft Office, sau đó bấm Tùy chọn Excel. Nút Tùy chọn Excel ở đâu?
  2. Nhấp Quốc tế.
  3. Theo hướng từ phải sang trái và mặc định, bấm phải-qua-trái, sau đó bấm OK.
  4. Chèn trang tính mới hoặc mở sổ làm việc mới.
  5. Trong thanh tác vụ Windows (hoặc trên thanh Ngôn ngữ, nếu có thể nhìn thấy), nhấp vào biểu tượng Ngôn ngữ, sau đó bấm vào tên của ngôn ngữ từ phải sang trái mà bạn muốn sử dụng .
  6. Nếu bạn cần thay đổi hướng của văn bản, hãy nhấp vào nút Từ phải sang trái trên tab Dữ liệu trong nhóm Căn chỉnh phông chữ.

Dường JXL api không hỗ trợ tính năng này. Bạn có thể xem Apache Poi (javadoc) hoặc TeamDev's JExcel (javadoc) phù hợp hơn với loại yêu cầu này. Thực hiện sẽ tương tự như sau đây:

Poi cách:

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

Via 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)); 
      } 
     }); 

Về poi: 1, 2, 3.

Btw, nếu bạn cố gắng sử dụng setExcelRegionalSettings(IL) hoặc setExcelRegionalSettings(IL-JM) sẽ không làm việc vì đây là những nước chỉ hỗ trợ bởi 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; 
+1

Apache là một trong những tốt, tôi sử dụng nó một thời gian trước đây, nó cho phép chỉnh sửa mà không rối tung lên bảng xếp hạng hoặc cài đặt nâng cao trong bảng tính. – NoBugs

8

Hiện nay JXL không hỗ trợ tùy chọn này, nhưng tôi có một giải pháp tốt sẽ hoạt động nếu bạn sẵn sàng chỉnh sửa và xây dựng lại JXL.

Tùy chọn từ phải sang trái được lưu và được xác định trong một phần của tệp có tên bản ghi WINDOW2. Bạn có thể xem tất cả các tùy chọn được xác định trong phần here trong phần 5.110 WINDOW2. Trong phần 5.110.2 Phương án Flags, bạn sẽ nhìn thấy giá trị mặt nạ cho cờ tùy chọn và tùy chọn từ phải sang trái:

6 | 0040H | 0 = Columns from left to right | 1 = Columns from right to left 

JXL tạo này là một phần của tệp excel trong lớp này - Window2Record.

Trong phương thức khởi tạo, bạn có thể thấy rằng một số giá trị được cấu hình và một số được mã hóa cứng:

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; 
    } 
... 

Như bạn có thể thấy các tùy chọn "hiển thị những biểu tượng đại cương" được cứng mã hoá đến mức khó tin, vì mặt nạ (0x80) luôn được thêm vào cờ tùy chọn và DisplayZeroValues ​​có thể định cấu hình theo giá trị của đối tượng SheetSettings đã cho (có getter và setters ...)

Nếu bạn sẵn sàng xây dựng lại dự án, bạn có thể mã cứng cài đặt từ phải sang trái của bạn bằng cách thêm dòng:

tùy chọn | = 0x40; // Cột từ phải sang trái

cho hàm tạo này, hoặc nếu bạn muốn cấu hình, hãy thêm tham số mới vào SheetSettings (và getter và setter cho nó) và trong Window2Record thêm mệnh đề if cho nó.

0

Để thiết lập từ phải sang trái hướng trong quá trình tạo bảng tính:

  • thủ tạo ra một file xls mẫu với từ phải sang trái văn bản hướng
  • Khi bạn muốn tạo một bảng tính mới trong Jexcel:

    • mở mẫu như một bảng tính
    • invok e phương thức trang tính để tạo trang tính mới dưới dạng bản sao của mẫu trang tính. Dưới đây là các phương thức trong lớp Workbook:.

      public static WritableWorkbook createWorkbook(java.io.File file, 
                     Workbook in) 
                 throws java.io.IOException 
      

      Tạo một bảng tính có thể ghi với tên tập tin được coi là một bản sao của bảng tính trôi qua trong khi tạo ra, các nội dung của bảng tính có thể ghi có thể được sửa đổi

Để thay đổi hướng sau khi tạo:

  • bạn có thể tự tạo một macro excel gọi AUTO_OPEN mà sẽ chạy bất cứ khi nào bảng tính đang mở:

    Application.DefaultSheetDirection = xlRTL 
        ActiveSheet.DisplayRightToLeft = True 
    
  • hoặc bạn có thể làm tất cả những xử lý của bạn với JXL, đóng tập tin và sau đó chạy một VBScript (interfacing với microsoft .office.interop.excel.dll):

    Set xl = CreateObject("Excel.application") 
    xl.Application.Workbooks.Open "yourworkbookpath\yourworkbook.xls" 
    xl.DefaultSheetDirection = xlRTL 
    

    Bạn có thể thực hiện một kịch bản từ java qua Process