Praca z komentarzami
Praca z komentarzami
Aspose.Cells FOSS dla Java pozwala dodawać, odczytywać, modyfikować i usuwać komentarze komórek (notatki) w skoroszytach XLSX. Komentarze są dostępne poprzez CommentCollection na arkuszu i są reprezentowane jako obiekty Comment, które zawierają tekst notatki, nazwę autora i wymiary wyświetlania.
Przegląd
Każdy arkusz udostępnia swoje komentarze poprzez Worksheet.getComments(), który zwraca CommentCollection. Możesz dodać komentarz podając adres komórki lub indeks wiersza/kolumny, pobrać istniejące komentarze według indeksu lub nazwy komórki oraz usunąć je, gdy nie są już potrzebne.
Obiekt Comment przechowuje tekst notatki (getNote()/setNote()), autora (getAuthor()/setAuthor()), pozycję kotwicy (getRow(), getColumn()), wymiary wyświetlania (getWidth(), getHeight()) oraz informację, czy jest domyślnie widoczny (isVisible()/setVisible()).
Uzyskiwanie dostępu do komentarzy w arkuszu
Pobierz CommentCollection z dowolnego Worksheet za pomocą Worksheet.getComments(). Użyj CommentCollection.getCount(), aby określić liczbę istniejących komentarzy. Poszczególne komentarze są dostępne przez indeks zerowy za pomocą CommentCollection.get(index) lub przez nazwę komórki za pomocą CommentCollection.get(cellName).
Dodawanie komentarza
Użyj CommentCollection.add(cellName) lub CommentCollection.add(row, column), aby wstawić nowy komentarz. Obie przeciążenia zwracają obiekt Comment. Ustaw tekst notatki i autora na zwróconym egzemplarzu przed zapisaniem.
// 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);Odczytywanie treści komentarza
Iteruj po wszystkich komentarzach, używając licznika:
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());
}Modyfikowanie istniejącego komentarza
Pobierz komentarz według adresu komórki i zaktualizuj jego pola bezpośrednio:
Comment c = ws.getComments().get("B2");
if (c != null) {
c.setNote("Updated note text.");
c.setVisible(true);
}Usuwanie komentarza
Użyj CommentCollection.removeAt(index) lub CommentCollection.removeAt(cellName), aby usunąć komentarz:
ws.getComments().removeAt("B2");Wskazówki i najlepsze praktyki
- Zawsze sprawdzaj, czy
CommentCollection.get(cellName)nie zwracanullprzed modyfikacją komentarza — komórka może nie mieć dołączonego komentarza. - Ustaw
Comment.setVisible(false)dla adnotacji, które powinny pojawiać się tylko po najechaniu, co odpowiada standardowemu zachowaniu Excela. - Użyj
Comment.setWidth()iComment.setHeight()(w pikselach), aby zapewnić, że pole notatki jest wystarczająco duże na tekst wielowierszowy. - Nazwy autorów są przechowywane jako zwykłe ciągi znaków; nie są weryfikowane względem listy użytkowników skoroszytu.
- Komentarze przetrwają cykl wczytania/zapisu w formacie XLSX, gdy nie wprowadzono żadnych zmian w
CommentCollection.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
get(cellName) zwraca null | Brak komentarza pod tym adresem | Sprawdź adres komórki lub iteruj według indeksu |
| Notatka komentarza jest pusta po zapisaniu | setNote() nie zostało wywołane przed zapisem | Wywołaj setNote() na zwróconym Comment przed zapisaniem skoroszytu |
| Komentarz niewidoczny w Excelu | setVisible(false) został ustawiony | Zmień na setVisible(true) lub najedź kursorem na komórkę w Excelu |
FAQ
Jak dodać komentarz w określonym wierszu i kolumnie?
Użyj CommentCollection.add(row, column), gdzie obie wartości są indeksami zerowymi. To jest równoważne add(cellName) z odpowiednim adresem komórki.
Czy mogę zmienić autora istniejącego komentarza?
Tak. Pobierz Comment za pomocą get(cellName) i wywołaj setAuthor(name) z nowym ciągiem autora.
Jak sprawdzić, czy komentarz jest obecnie widoczny?
Wywołaj Comment.isVisible(). Zwraca true, jeśli pole komentarza jest zawsze wyświetlane; false, jeśli pojawia się tylko po najechaniu.
Czy komentarze są zachowywane przy konwersji do innych formatów?
Komentarze są zachowywane przy dwukierunkowej konwersji XLSX. Zachowanie zachowywania w innych formatach zależy od wsparcia formatu w docelowym wyjściu.
Jak policzyć komentarze na arkuszu?
Użyj Worksheet.getComments().getCount().
Podsumowanie API Reference
Comment
| Metoda | Typ zwracany | Opis |
|---|---|---|
getRow() | int | Indeks wiersza liczony od zera komórki kotwicy. |
getColumn() | int | Indeks kolumny (liczony od zera) komórki kotwicy. |
getNote() | String | Tekst komentarza. |
setNote(note) | void | Ustawia tekst komentarza. |
getAuthor() | String | Nazwa autora. |
setAuthor(author) | void | Ustawia nazwę autora. |
isVisible() | boolean | Czy pole komentarza jest zawsze widoczne. |
setVisible(visible) | void | Ustawia widoczność pola komentarza. |
getWidth() | int | Szerokość pola komentarza w pikselach. |
setWidth(width) | void | Ustawia szerokość pola komentarza. |
getHeight() | int | Wysokość pola komentarza w pikselach. |
setHeight(height) | void | Ustawia wysokość pola komentarza. |
CommentCollection
| Metoda | Typ zwracany | Opis |
|---|---|---|
getCount() | int | Liczba komentarzy w arkuszu. |
get(index) | Comment | Zwraca komentarz pod indeksem zerowym. |
get(cellName) | Comment | Zwraca komentarz podanym adresem komórki. |
add(row, column) | Comment | Dodaje nowy komentarz w pozycji wiersz/kolumna. |
add(cellName) | Comment | Dodaje nowy komentarz pod adresem komórki. |
removeAt(index) | void | Usuwa komentarz pod indeksem zerowym. |
removeAt(cellName) | void | Usuwa komentarz pod adresem komórki. |