Iwark / spreadsheet

Google Go (golang) library for reading and writing spreadsheet files on Google Docs.
MIT License
382 stars 53 forks source link

how to remove a row? #16

Closed cescoferraro closed 7 years ago

cescoferraro commented 7 years ago

this does not work. I actually removes the row from the slice, but the sheet does not get syncronized. Am I missing something here?

func RemoveIndex(s [][]spreadsheet.Cell, index int) [][]spreadsheet.Cell {
    return append(s[:index], s[index + 1:]...)
}

func deleteRow(rowIndex int, sheet *spreadsheet.Sheet) (error) {
    log.Println(len(sheet.Rows))
    sheet.Rows = RemoveIndex(sheet.Rows, rowIndex)
    log.Println(len(sheet.Rows))
    err := sheet.Synchronize()
    if err != nil {
        return err
    }
    return nil

}

[0] [00] 2017/02/24 10:45:55 "OPTIONS http://localhost:7070/delete HTTP/1.1" from [::1]:40142 - 200 0B in 9.78µs
[0] [00] 2017/02/24 10:45:58 13
[0] [00] 2017/02/24 10:45:58 12
[0] [00] 2017/02/24 10:45:58 "GET http://localhost:7070/sheet HTTP/1.1" from [::1]:40144 - 200 2061B in 2.878961687s
Iwark commented 7 years ago

@cescoferraro Hi, Thanks for using this package.

I added functions to delete rows / columns. Please try following:

err := sheet.DeleteRows(0, 3) // Delete first three rows in the sheet

err := sheet.DeleteColumns(1, 4) // Delete columns B:D
cescoferraro commented 7 years ago

@Iwark thanks for sharing! Would you consider adding some convenient methods?

I am doing

    row, err := findByCPF(worker.Cpf, sheet)
    if err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        render.JSON(w, r, err.Error())
        return
    }
    //  err = sheet.DeleteRow(row) cleaner api 
    err = sheet.DeleteRows(row, row + 1)
    if err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        render.JSON(w, r, err.Error())
        return
    }
// DeleteRow deletes a row from the sheet
func (sheet *Sheet) DeleteRow(row int) (err error) {
    err = sheet.Spreadsheet.service.DeleteRows(sheet, row, row + 1)
    return
}
// DeleteColumn deletes a column from the sheet
func (sheet *Sheet) DeleteColumn(collumn int) (err error) {
    err = sheet.Spreadsheet.service.DeleteColumns(sheet, collumn, collumn + 1)
    return
}