Как загрузить электронную таблицу в Go

Как загрузить электронную таблицу в Go

Aspose.Cells FOSS для Go загружает существующую рабочую книгу .xlsx в память как Workbook, предоставляя вам полный доступ к её листам и ячейкам через стандартную библиотеку API. Установите модуль с помощью go get перед началом.

Пошаговое руководство

Шаг 1: Установите пакет

go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26

Проверьте версию модуля в вашем go.mod после установки.


Шаг 2: Импортируйте необходимые классы

import (
	cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)

Шаг 3: Создать и заполнить рабочую книгу для загрузки

В этом примере сначала создаётся рабочая книга, чтобы иметь реальный .xlsx файл для загрузки — в вашем собственном коде замените путь на существующую таблицу:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", 12.99)
wb.Save("outputfiles/products.xlsx")

Шаг 4: Считать значения ячеек из загруженного листа

Получите доступ к первому листу через Worksheets[0] и считайте отдельные ячейки с помощью Cells().Get(ref):

wb := cells_foss.NewWorkbook()
wb.Worksheets[0].Cells().Set("B2", 12.99)

ws2 := wb.Worksheets[0]
cell, err := ws2.Cells().Get("B2")
if err != nil {
	fmt.Printf("Error reading cell: %v\n", err)
	return
}
fmt.Printf("Price: %v\n", cell.Value)

Шаг 5: Перебрать все заполненные ячейки

Используйте Cells().All(), когда нужно пройтись по каждой установленной ячейке, а не считывать известные ссылки по одной:

wb := cells_foss.NewWorkbook()
ws2 := wb.Worksheets[0]
ws2.Cells().Set("A1", "Product")

allCells := ws2.Cells().All()
for ref, c := range allCells {
	fmt.Printf("%s = %v\n", ref, c.Value)
}

Распространённые проблемы и их решения

Get возвращает ошибку для ссылки на ячейку. Ссылка ещё не установлена в коллекции. Убедитесь, что ячейка была записана с помощью Set, или проверьте возвращённый error явно перед использованием ячейки.

Значения выглядят как неправильный тип. Cell.Value отражает любой тип, переданный в Set (string, int, float64 и т.д.) — проверьте его с помощью type switch, если необходимо ветвиться по базовому типу Go.

Загруженная рабочая книга не содержит данных на ожидаемом листе. Подтвердите, что вы индексируете правильную запись в Worksheets — у книги может быть более одного листа, и целевые данные могут находиться не на Worksheets[0].

Часто задаваемые вопросы

Требуется ли, чтобы оригинальный файл всё ещё существовал на диске при загрузке книги?

Да — Workbook читает из указанного вами пути к файлу. Держите исходный файл доступным на протяжении всей загрузки.

Могу ли я изменить ячейку после загрузки и сохранить изменения?

Да — Cells().Set работает с загруженной книгой так же, как и с только что созданной; вызовите Save ещё раз, чтобы записать изменения.

Есть ли способ избежать загрузки всего файла в память?

Да — используйте StreamingReader.ProcessRows для больших файлов, когда нужно лишь последовательно считывать строки, а не загружать всю рабочую книгу.

См. также:

 Русский