2013-08-01 64 views
3

我正在使用Aspose-Cells和java在我的系統中導出excel模板。是否有可能解鎖受保護工作表中的特定單元格(使用Aspose)

在這種特殊情況下,我生成了一個電子表格,其中有兩張要保護的表格。 其中之一,我需要讓用戶只編輯4個單元格。其餘的都應該受到保護。 最簡單的實現應該是:

  1. 保護工作表
  2. 解鎖每個小區我想讓用戶編輯。

問題是我正在檢查是否有可能做到這一點(保護整個工作表並僅解鎖幾個單元格),而且似乎無法進行。請告訴我我錯了,有辦法做到這一點,否則我將不得不鎖定工作表中的所有現有單元格,並只解鎖其中的4個單元。對於使用其他庫(PHPExcel)的經驗,它在性能方面似乎非常昂貴(我必須將它應用於1000行和40列以上,因此成本非常高)。

+0

ASPOSE在這方面不能像Excel那樣工作(即所有的單元格都被默認鎖定 - * un *在應用保護之前鎖定了4個單元格)? – pnuts

+0

我沒有聽說過aspose-cells自己,所以我不知道我是否閱讀正確的文檔,但在這裏:http://www.aspose.com/docs/display/cellsjava/Style有一個'setLocked(booleanvalue)''方法...是的,我認爲pnuts是正確的,因爲'Excel'默認爲所有單元格被鎖定 – chancea

+0

@chancea是不是隻適用於單元格樣式?我的意思是......我不確定,但它似乎鎖定/解鎖單元格中的編輯樣式。無論如何,我要檢查它.. – periback2

回答

2

使用Aspose.Cells for Java可以輕鬆完成。您可以

  1. 首先鎖定所有列(所有單元)在一個工作表
  2. 解鎖特定的細胞或細胞

的範圍請參見下面的示例。

String dataDir = "D:\\data\\"; 
// Create or load workbook 
Workbook book = new Workbook(); 

// Get the first worksheet 
Worksheet sheet = book.getWorksheets().get(0); 

Style style; 
StyleFlag flag = new StyleFlag(); 

// First lock all columns 
for (int iCol=0 ; iCol<255 ; iCol++) 
{ 
    // Get style of the column 
    style = sheet.getCells().getColumns().get(iCol).getStyle(); 
    // Apply locking to the style 
    style.setLocked(true); 
    flag.setLocked(true); 
    sheet.getCells().getColumns().get(iCol).applyStyle(style, flag); 
} 

// Get the range of cells, which we want to unlock 
Range rangeUnlocked = sheet.getCells().createRange("A1:D4"); 
// Add a new style 
int styleIndex = book.getStyles().add(); 
Style styleUnlocked = book.getStyles().get(styleIndex); 
// Unlock cells 
styleUnlocked.setLocked(false); 
rangeUnlocked.setStyle(styleUnlocked); 

// Protect the sheet 
sheet.protect(ProtectionType.ALL); 

//Save the Excel file 
book.save(dataDir + "protectedrange.xlsx"); 

我在閱讀Aspose工作作爲一個開發者傳播者。

相關問題