Arbeiten mit Kommentaren
Arbeiten mit Kommentaren
Aspose.Cells FOSS für Java ermöglicht das Hinzufügen, Lesen, Ändern und Entfernen von Zellenkommentaren (Notizen) in XLSX-Arbeitsmappen. Kommentare werden über das CommentCollection in einem Arbeitsblatt abgerufen und als Comment-Objekte dargestellt, die den Notiztext, den Autorennamen und die Anzeigedimensionen enthalten.
Übersicht
Jedes Arbeitsblatt stellt seine Kommentare über Worksheet.getComments() bereit, das ein CommentCollection zurückgibt. Sie können einen Kommentar per Zelladresse oder per Zeilen-/Spaltenindex hinzufügen, vorhandene Kommentare nach Index oder Zellnamen abrufen und sie entfernen, wenn sie nicht mehr benötigt werden.
Ein Comment speichert den Notiztext (getNote()/setNote()), den Autor (getAuthor()/setAuthor()), seine Ankerposition (getRow(), getColumn()), seine Anzeigedimensionen (getWidth(), getHeight()) und ob er standardmäßig sichtbar ist (isVisible()/setVisible()).
Zugriff auf Kommentare in einem Arbeitsblatt
Rufen Sie das CommentCollection aus jedem Worksheet über Worksheet.getComments() ab. Verwenden Sie CommentCollection.getCount(), um zu bestimmen, wie viele Kommentare vorhanden sind. Einzelne Kommentare sind über einen nullbasierten Index mittels CommentCollection.get(index) oder über den Zellnamen mittels CommentCollection.get(cellName) zugänglich.
Hinzufügen eines Kommentars
Verwenden Sie CommentCollection.add(cellName) oder CommentCollection.add(row, column), um einen neuen Kommentar einzufügen. Beide Überladungen geben ein Comment-Objekt zurück. Setzen Sie den Notiztext und den Autor auf der zurückgegebenen Instanz, bevor Sie sie speichern.
// 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);Lesen des Kommentar-Inhalts
Iterieren Sie über alle Kommentare mit dem count:
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());
}Ändern eines bestehenden Kommentars
Rufen Sie den Kommentar über die Zelladresse ab und aktualisieren Sie seine Felder direkt:
Comment c = ws.getComments().get("B2");
if (c != null) {
c.setNote("Updated note text.");
c.setVisible(true);
}Entfernen eines Kommentars
Verwenden Sie CommentCollection.removeAt(index) oder CommentCollection.removeAt(cellName), um einen Kommentar zu löschen:
ws.getComments().removeAt("B2");Tipps und bewährte Vorgehensweisen
- Stellen Sie immer sicher, dass
CommentCollection.get(cellName)nichtnullzurückgibt, bevor Sie einen Kommentar ändern — die Zelle hat möglicherweise keinen Kommentar angehängt. - Legen Sie
Comment.setVisible(false)für Anmerkungen fest, die nur beim Überfahren angezeigt werden sollen, was dem Standardverhalten von Excel entspricht. - Verwenden Sie
Comment.setWidth()undComment.setHeight()(in Pixeln), um sicherzustellen, dass das Notizfeld für mehrzeiligen Text ausreichend groß ist. - Autorennamen werden als einfache Zeichenketten gespeichert; sie werden nicht gegen die Benutzerliste der Arbeitsmappe validiert.
- Kommentare überstehen einen Lade-/Speichervorgang im XLSX-Format, wenn an
CommentCollectionkeine Änderungen vorgenommen werden.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
get(cellName) gibt null zurück | Kein Kommentar an dieser Adresse | Überprüfen Sie die Zelladresse oder iterieren Sie nach Index |
| Kommentar-Notiz ist nach dem Speichern leer | setNote() wurde nicht vor dem Speichern aufgerufen | Rufen Sie setNote() auf dem zurückgegebenen Comment auf, bevor Sie die Arbeitsmappe speichern |
| Kommentar in Excel nicht sichtbar | setVisible(false) wurde gesetzt | Ändern Sie zu setVisible(true) oder fahren Sie mit der Maus über die Zelle in Excel |
FAQ
Wie füge ich einen Kommentar in einer bestimmten Zeile und Spalte hinzu?
Verwenden Sie CommentCollection.add(row, column), wobei beide Werte nullbasierte Indizes sind. Das entspricht add(cellName) mit der entsprechenden Zellenadresse.
Kann ich den Autor eines bestehenden Kommentars ändern?
Ja. Rufen Sie das Comment über get(cellName) ab und rufen Sie setAuthor(name) mit dem neuen Autor-String auf.
Wie prüfe ich, ob ein Kommentar derzeit sichtbar ist?
Rufen Sie Comment.isVisible() auf. Gibt true zurück, wenn das Kommentarfeld immer angezeigt wird; false, wenn es nur bei Mauszeigerkontakt erscheint.
Werden Kommentare beim Konvertieren in andere Formate beibehalten?
Kommentare werden beim XLSX-Rundweg beibehalten. Das Beibehaltungsverhalten für andere Formate hängt von der Formatunterstützung in der Zielausgabe ab.
Wie zähle ich Kommentare in einem Arbeitsblatt?
Verwenden Sie Worksheet.getComments().getCount().
API Reference Zusammenfassung
Comment
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
getRow() | int | Nullbasierter Zeilenindex der Ankerzelle. |
getColumn() | int | Nullbasierter Spaltenindex der Ankerzelle. |
getNote() | String | Der Kommentartext. |
setNote(note) | void | Legt den Kommentartext fest. |
getAuthor() | String | Der Autorenname. |
setAuthor(author) | void | Setzt den Autorennamen. |
isVisible() | boolean | Ob das Kommentarfeld immer sichtbar ist. |
setVisible(visible) | void | Setzt die Sichtbarkeit des Kommentarfelds. |
getWidth() | int | Breite des Kommentarfelds in Pixeln. |
setWidth(width) | void | Legt die Breite des Kommentarfelds fest. |
getHeight() | int | Höhe des Kommentarfelds in Pixeln. |
setHeight(height) | void | Legt die Höhe des Kommentarfelds fest. |
CommentCollection
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
getCount() | int | Anzahl der Kommentare im Arbeitsblatt. |
get(index) | Comment | Gibt den Kommentar am nullbasierten Index zurück. |
get(cellName) | Comment | Gibt den Kommentar an der angegebenen Zelladresse zurück. |
add(row, column) | Comment | Fügt einen neuen Kommentar an der Zeilen-/Spaltenposition hinzu. |
add(cellName) | Comment | Fügt einen neuen Kommentar an der Zelladresse hinzu. |
removeAt(index) | void | Entfernt den Kommentar am nullbasierten Index. |
removeAt(cellName) | void | Entfernt den Kommentar an der Zelladresse. |