2013-08-01 3 views
3

Aspose-Cells 및 java를 사용하여 내 시스템에서 Excel 템플릿을 내보내고 있습니다.보호 된 시트에서 특정 셀의 잠금을 해제 할 수 있습니까? (Aspose 사용)

이 특정 상황에서 나는 내가 보호하고 싶은 두 장의 스프레드 시트를 생성하고 있습니다. 그 중 하나에서 사용자가 4 개의 셀만 편집 할 수있게해야합니다. 나머지는 모두 보호해야합니다. 간단한 구현해야한다 :

  1. 이 시트
  2. 잠금 해제 나 사용자의 편집을하게하려는 각 셀을 보호합니다.

문제는 내가 (단지 몇 세포를 전체 시트를 보호하고 잠금 해제)가이 작업을 수행 할 수 있는지 확인하기 위해 검색되고 가능하지 않을 것으로 보인다는 것이다. 제발 .. 제가 틀렸다고 말하면 이것을 할 수있는 방법이 있습니다. 그렇지 않으면 시트에있는 모든 기존 셀을 잠그고 그 중 4 개의 잠금을 해제해야 할 것입니다. 다른 라이브러리 (PHPExcel)를 사용한 제 경험으로는 성능면에서 비용이 많이 드는 것 같습니다. (필자는 1000 행 이상 40 열을 적용해야하므로 비용이 많이 듭니다.)

+0

ASPOSE는 Excel이 이러한 측면에서 작동하는 방식으로 작동하지 않습니까? 예 : 모든 셀이 기본적으로 잠겨 있습니다. * 보호를 적용하기 전에 4 개의 셀을 잠급니다. – pnuts

+0

나는 스스로 aspose-cells에 대해 들어 본 적이 없으므로 내가 올바른 문서를 읽고 있는지는 모르지만 여기 : http://www.aspose.com/docs/display/cellsjava/Style'setLocked (booleanvalue)'가있다. method ... 그리고 yes 'Excel'은 모든 셀이 잠겨 있기 때문에 pnuts가 정확하다고 가정합니다. – chancea

+0

@chancea는 셀에 스타일을 적용하기위한 것이 아닙니까? 내 말은 .. 난 잘 모르겠지만, 셀에서 스타일 편집을 잠 그거나 잠금 해제하는 것 같습니다. 어쨌든 그것을 확인해 볼게. – periback2

답변

2

Java 용 Aspose.Cells를 사용하면 쉽게 수행 할 수 있습니다. 당신은

  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에서 일합니다.