Lavorare con i commenti
Lavorare con i commenti
Aspose.Cells FOSS per Java consente di aggiungere, leggere, modificare e rimuovere i commenti delle celle (note) nei workbook XLSX. I commenti sono accessibili tramite il CommentCollection su un foglio di lavoro e sono rappresentati come oggetti Comment che contengono il testo della nota, il nome dell’autore e le dimensioni di visualizzazione.
Panoramica
Ogni foglio di lavoro espone i propri commenti tramite Worksheet.getComments(), che restituisce un CommentCollection. È possibile aggiungere un commento tramite l’indirizzo della cella o tramite l’indice di riga/colonna, recuperare i commenti esistenti per indice o per nome della cella e rimuoverli quando non sono più necessari.
Un Comment memorizza il testo della nota (getNote()/setNote()), l’autore (getAuthor()/setAuthor()), la sua posizione di ancoraggio (getRow(), getColumn()), le sue dimensioni di visualizzazione (getWidth(), getHeight()) e se è visibile per impostazione predefinita (isVisible()/setVisible()).
Accedere ai commenti su un foglio di lavoro
Recupera il CommentCollection da qualsiasi Worksheet tramite Worksheet.getComments(). Usa CommentCollection.getCount() per determinare quanti commenti sono presenti. I commenti individuali sono accessibili tramite indice a base zero attraverso CommentCollection.get(index) o per nome della cella tramite CommentCollection.get(cellName).
Aggiungere un commento
Usa CommentCollection.add(cellName) o CommentCollection.add(row, column) per inserire un nuovo commento. Entrambi i sovraccarichi restituiscono un oggetto Comment. Imposta il testo della nota e l’autore sull’istanza restituita prima di salvare.
// Add a comment to cell B2 and configure it
Comment comment = ws.getComments().add("B2");
comment.setNote("Review this value before submission.");
comment.setAuthor("Analyst");
comment.setVisible(false);
comment.setWidth(180);
comment.setHeight(60);Lettura del contenuto del commento
Itera su tutti i commenti usando il conteggio:
CommentCollection comments = ws.getComments();
for (int i = 0; i < comments.getCount(); i++) {
Comment c = comments.get(i);
System.out.printf("Cell [%d,%d] author=%s note=%s%n",
c.getRow(), c.getColumn(), c.getAuthor(), c.getNote());
}Modifica di un commento esistente
Recupera il commento tramite l’indirizzo della cella e aggiorna direttamente i suoi campi:
Comment c = ws.getComments().get("B2");
if (c != null) {
c.setNote("Updated note text.");
c.setVisible(true);
}Rimozione di un commento
Usa CommentCollection.removeAt(index) o CommentCollection.removeAt(cellName) per eliminare un commento:
ws.getComments().removeAt("B2");Suggerimenti e migliori pratiche
- Verifica sempre che
CommentCollection.get(cellName)non restituiscanullprima di modificare un commento — la cella potrebbe non avere alcun commento allegato. - Imposta
Comment.setVisible(false)per le annotazioni che dovrebbero apparire solo al passaggio del mouse, in linea con il comportamento standard di Excel. - Usa
Comment.setWidth()eComment.setHeight()(in pixel) per garantire che la casella della nota sia sufficientemente grande per il testo su più righe. - I nomi degli autori sono memorizzati come stringhe semplici; non vengono convalidati rispetto all’elenco utenti della cartella di lavoro.
- I commenti sopravvivono a un ciclo di caricamento/salvataggio tramite XLSX quando non vengono apportate modifiche a
CommentCollection.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
get(cellName) restituisce null | Nessun commento a quell’indirizzo | Verifica l’indirizzo della cella o itera per indice |
| La nota del commento è vuota dopo il salvataggio | setNote() non è stato chiamato prima del salvataggio | Chiama setNote() sul Comment restituito prima di salvare la cartella di lavoro |
| Commento non visibile in Excel | setVisible(false) è stato impostato | Modifica in setVisible(true) o passa il mouse sulla cella in Excel |
FAQ
Come aggiungere un commento in una riga e colonna specifiche?
Usa CommentCollection.add(row, column), dove entrambi i valori sono indici a base zero. Questo è equivalente a add(cellName) con l’indirizzo della cella corrispondente.
Posso cambiare l’autore di un commento esistente?
Sì. Recupera il Comment tramite get(cellName) e chiama setAuthor(name) con la nuova stringa dell’autore.
Come verifico se un commento è attualmente visibile?
Chiama Comment.isVisible(). Restituisce true se la casella del commento è sempre mostrata; false se appare solo al passaggio del mouse.
I commenti vengono conservati durante la conversione in altri formati?
I commenti vengono conservati nel round-trip XLSX. Il comportamento di conservazione per altri formati dipende dal supporto del formato nell’output di destinazione.
Come conto i commenti in un foglio di lavoro?
Usa Worksheet.getComments().getCount().
API Reference Riepilogo
Comment
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
getRow() | int | Indice di riga basato su zero della cella di ancoraggio. |
getColumn() | int | Indice di colonna a base zero della cella di ancoraggio. |
getNote() | String | Il testo del commento. |
setNote(note) | void | Imposta il testo del commento. |
getAuthor() | String | Il nome dell’autore. |
setAuthor(author) | void | Imposta il nome dell’autore. |
isVisible() | boolean | Se la casella dei commenti è sempre visibile. |
setVisible(visible) | void | Imposta la visibilità della casella dei commenti. |
getWidth() | int | Larghezza della casella dei commenti in pixel. |
setWidth(width) | void | Imposta la larghezza della casella dei commenti. |
getHeight() | int | Altezza della casella di commento in pixel. |
setHeight(height) | void | Imposta l’altezza della casella dei commenti. |
CommentCollection
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
getCount() | int | Numero di commenti sul foglio di lavoro. |
get(index) | Comment | Restituisce il commento all’indice basato su zero. |
get(cellName) | Comment | Restituisce il commento all’indirizzo della cella fornito. |
add(row, column) | Comment | Aggiunge un nuovo commento nella posizione riga/colonna. |
add(cellName) | Comment | Aggiunge un nuovo commento all’indirizzo della cella. |
removeAt(index) | void | Rimuove il commento all’indice basato su zero. |
removeAt(cellName) | void | Rimuove il commento all’indirizzo della cella. |