Utilizzo il POI Apache per generare un file Excel (2007). Quello che voglio è proteggere il foglio, ma con alcune opzioni abilitate. Per opzioni intendo l'elenco delle caselle di controllo quando si tenta di proteggere il foglio nell'applicazione Excel (sotto l'etichetta "Consenti a tutti gli utenti di questo foglio di lavoro di:"). Nello specifico, voglio abilitare "Seleziona celle bloccate/sbloccate", "Formatta colonne", "Ordina" e "Consenti filtro automatico". Grazie mille! : DPOI Apache - Come proteggere il foglio con le opzioni?
risposta
In Apache POI 3.9 è possibile utilizzare la protezione dello strato XSSF abilitando le funzioni di blocco. anche tu puoi lasciare indietro alcuni oggetti excel sbloccati come nel caso in cui ho lasciato fuori l'oggetto excel (cioè la casella di testo) sbloccato e il resto è bloccato.
private static void lockAll(Sheet s, XSSFWorkbook workbookx){
String password= "abcd";
byte[] pwdBytes = null;
try {
pwdBytes = Hex.decodeHex(password.toCharArray());
} catch (DecoderException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
XSSFSheet sheet = ((XSSFSheet)s);
removePivot(s,workbookx);
sheet.lockDeleteColumns();
sheet.lockDeleteRows();
sheet.lockFormatCells();
sheet.lockFormatColumns();
sheet.lockFormatRows();
sheet.lockInsertColumns();
sheet.lockInsertRows();
sheet.getCTWorksheet().getSheetProtection().setPassword(pwdBytes);
for(byte pwdChar :pwdBytes){
System.out.println(">>> Sheet protected with '" + pwdChar + "'");
}
sheet.enableLocking();
workbookx.lockStructure();
}
Si potrebbe verificare che non è possibile selezionare le funzionalità, è tutto o niente. Questo è attualmente un bug noto in Apache Poi. Fonte: https://issues.apache.org/bugzilla/show_bug.cgi?id=51483
È possibile risolvere questo problema utilizzando la seguente soluzione:
xssfSheet.enableLocking();
CTSheetProtection sheetProtection = xssfSheet.getCTWorksheet().getSheetProtection();
sheetProtection.setSelectLockedCells(true);
sheetProtection.setSelectUnlockedCells(false);
sheetProtection.setFormatCells(true);
sheetProtection.setFormatColumns(true);
sheetProtection.setFormatRows(true);
sheetProtection.setInsertColumns(true);
sheetProtection.setInsertRows(true);
sheetProtection.setInsertHyperlinks(true);
sheetProtection.setDeleteColumns(true);
sheetProtection.setDeleteRows(true);
sheetProtection.setSort(false);
sheetProtection.setAutoFilter(false);
sheetProtection.setPivotTables(true);
sheetProtection.setObjects(true);
sheetProtection.setScenarios(true);
Im usando un oggetto XSSFSheet. C'è un modo per abilitare l'opzione Cancella tutti i filtri in excel con il mio foglio protetto.? eventuali suggerimenti ? –
- 1. Apache POI rows number
- 2. POI Apache Excel: come configurare le colonne da espandere?
- 3. Importazione di dati CSV con POI Apache
- 4. Come cercare un foglio Excel per una data specifica utilizzando il POI di Apache?
- 5. come copiare un foglio di un foglio di lavoro su un altro foglio di lavoro utilizzando POI apache e java
- 6. Come applicare il colore di sfondo per le righe nel foglio excel usando il POI di Apache?
- 7. Come cambiare il colore del testo specifico nella stessa cella del foglio excel usando apache poi?
- 8. Prestazioni POI Apache
- 9. POI Apache: API per identificare le tabelle nel foglio Excel e leggerle
- 10. Interruzioni pagina apache poi
- 11. Le dipendenze Maven richieste per il POI Apache funzionano
- 12. Apache POI Excel Tot. Tabella Minore
- 13. Rileva l'orientamento di stampa necessario con Apache POI
- 14. Converti Word in HTML con Apache POI
- 15. Formato data apache poi
- 16. POI Apache: SXSSFWorkbook.dispose() inesistente
- 17. Apache POI SXSSF e XSSF
- 18. leggere il file excel utilizzando Apache POI
- 19. Cosa significa il parametro `index` nel foglio POI di Apache` getMergedRegion`?
- 20. Java Apache POI Excel salva come PDF
- 21. Come ottenere più di 255 colonne in un foglio Excel utilizzando Apache POI 3.6
- 22. Come posso creare un semplice file docx con POI Apache?
- 23. Apache POI valuta Data Format
- 24. Apache POI Errore di analisi
- 25. Come proteggere le DLL?
- 26. POI Apache: ottieni il numero come numero intero
- 27. Apache POI Streaming (SXSSF) per la lettura
- 28. come stampare il valore esatto della cella data nel formato data foglio excel come mm/gg/aaaa usando apache poi
- 29. come ruotare il testo in HSSFCell nel POI apache?
- 30. come impostare le righe del titolo di stampa nel foglio excel usando il POI?
non credo che al di là 'sheet.getSettings()' metodi set(), si può fare nulla. – TheWhiteRabbit
sheet.getSettings() proviene da JExcel, non da Apache POI, penso. – Jairo