xlsxwriter: er der en måde at åbne et eksisterende regneark i min projektmappe?

Jeg er i stand til at åbne min præ-eksisterende projektmappe, men jeg kan ikke se nogen måde at åbne eksisterende regneark i denne projektmappe. Er der nogen måde at gøre dette på?

xlsxwriter bibliotek for skrivning af excel-filer – det kan ikke læse dem.
se stackoverflow.com/questions/18849535/…

OriginalForfatteren Nick | 2013-08-01

2 svar

  1. 19

    Du kan ikke føjes til en eksisterende xlsx-fil med xlsxwriter.

    Der er et modul, der kaldes openpyxl, som giver dig mulighed for at læse og skrive til allerede eksisterende excel-fil, men jeg er sikker på, at metode til at gøre dette indebærer læsning fra excel-filen, gemme alle de oplysninger, der på en eller anden måde (database eller arrays), og derefter omskrivning, når du kalder workbook.close() der vil derefter skrive alle de oplysninger til din xlsx-fil.

    På samme måde, kan du bruge en metode til din egen “tilføj” for at xlsx dokumenter. Jeg har for nylig var nødt til at føje til en xlsx-fil, fordi jeg havde en masse forskellige tests, hvor jeg havde GPS-data, som kommer i til en hoved-regneark, og så måtte jeg til at tilføje et nyt ark, hver gang en test startet så godt. Den eneste måde, jeg kunne komme uden om dette uden openpyxl var at læse excel-fil med xlrd og derefter køre gennem rækker og kolonner…

    dvs

    cells = []
    for row in range(sheet.nrows):
        cells.append([])
        for col in range(sheet.ncols):
            cells[row].append(workbook.cell(row, col).value)

    Du behøver ikke arrays, selv om. For eksempel, dette virker helt fint:

    import xlrd
    import xlsxwriter
    
    from os.path import expanduser
    home = expanduser("~")
    
    # this writes test data to an excel file
    wb = xlsxwriter.Workbook("{}/Desktop/test.xlsx".format(home))
    sheet1 = wb.add_worksheet()
    for row in range(10):
        for col in range(20):
            sheet1.write(row, col, "test ({}, {})".format(row, col))
    wb.close()
    
    # open the file for reading
    wbRD = xlrd.open_workbook("{}/Desktop/test.xlsx".format(home))
    sheets = wbRD.sheets()
    
    # open the same file for writing (just don't write yet)
    wb = xlsxwriter.Workbook("{}/Desktop/test.xlsx".format(home))
    
    # run through the sheets and store sheets in workbook
    # this still doesn't write to the file yet
    for sheet in sheets: # write data from old file
        newSheet = wb.add_worksheet(sheet.name)
        for row in range(sheet.nrows):
            for col in range(sheet.ncols):
                newSheet.write(row, col, sheet.cell(row, col).value)
    
    for row in range(10, 20): # write NEW data
        for col in range(20):
            newSheet.write(row, col, "test ({}, {})".format(row, col))
    wb.close() # THIS writes

    Men jeg fandt, at det var lettere at læse data og gemme i en 2-dimensional array, fordi jeg var manipulere data, og blev modtaget input igen og igen og har ikke lyst til at skrive til excel-fil, indtil det testen var overstået (som du kunne lige så godt gøre med xlsxwriter, da det er sandsynligvis, hvad de gør alligevel, indtil du ringer .close()).

    Jeg ville virkelig ikke sige “yderst kompleks struktur”. Strukturen er bare en zipfil arkiv af ark, hvor hvert ark, er en XML-fil med celleindholdet. Det er ganske let at få adgang, læse, redigere, bare XlsxWriter har til hensigt at være en forfatter. Ikke en reader.
    tak!
    Awesome, en fremragende svar nu efter redigeringer. +1.
    Jeg tænke på, hvor komplekst det ser ud til at være, afhænger af, hvad du prøver at få ud af det. Hvis du bare har brug for cellen værdier, så er det faktisk forholdsvis enkle at læse. Men hvis du ønsker at udpakke formler og formatering og sådan, det er ikke så simpelt. Måske er der stadig ikke er “yderst kompliceret”, men kompleks nok til, at ingen er farende for at sætte funktionalitet huller i xlrd og OpenPyXL. (Selv Apache POI, som er skrevet i Java, har et par huller.) Også, jeg tror, det er komplekst nok, at du kan skrue op en allerede eksisterende fil, hvis du forsøger at skrive til det uden at vide, hvad du laver.

    OriginalForfatteren dylnmc

  2. 0

    Efter at have søgt lidt om metode til at åbne eksisterende regneark i xlxs, opdagede jeg,

    existingWorksheet = wb.get_worksheet_by_name('Your Worksheet name goes here...')
    existingWorksheet.write_row(0,0,'xyz')

    Nu kan du tilføje/skrive data til det åbne regneark.
    Jeg håber, det hjælper.
    Tak

    Hej, hvordan kan du åbne Projektmappen for læsning/skrivning? Da jeg prøvede denne funktion kan kun få regnearket, efter det er blevet skabt af dit script. Baseret på den dokumentation, du kan ikke læse eller ændre (xlsxwriter.readthedocs.io/introduction.html)

    OriginalForfatteren Dikshit Kathuria

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *