Taulukko luetteloksi LibreCalcilla?

Liittynyt
10.07.2017
Viestejä
954
Eli pitäisi 8-sarakkeinen taulukko saada helposti luettavaksi rivi-riviltä luetteloksi.

Nyt taulukko on tyyliä:

MyyntiryhmäTyyppiArtistiLevyn nimiJulk. vuosiLevy-yhtiöMyyntihinta-arvioRyhmän hinta
1CDPekkaPekka2031Peräkylä Oy2 €
1CDSimoIskelmä-Simo2025Grammari5 €
1C-kasettiTimoRokki-Timo2020Stratocaster 6666 €
1CDDimoGreatest Shits Ever1991Rockdealer5 €18 €
2CDAbdullah Mohammad MuhammedAlahu Akbar2001Yorker 91149 €
2jne.jne.jne.jne.jne.jne....

Taulukko tulisi saada muotoon:

Myyntiryhmä: 1
CD
Pekka
Pekka
2031
Peräkylä Oy
Tallenteen hinta: 2 €

Myyntiryhmä: 1
(tähän muut samalla tyylillä, kunnes ryhmän viimeinen)
...

Myyntiryhmä: 1
Dimo
Greatest Shits Ever
1991
Rockdealer
Tallenteen hinta: 5 €
Myyntiryhmän hinta: 18 €

Myyntiryhmä 2:
...

Eli siis tulisi saada selväpiirteiseen luettelomuotoon. Kokeilin TOCOL-CHOOSECOLS -komboa jolla ne sai kyllä luetteloon, mutta formaatit katosivat ja lisäksi järjestys oli sekava, esim. formaatittomia numeroita ja niiden välissä ei tyhmää riviä. Käytännössä kun on siis 75-rivinen luettelo, ne tulisi kaikki yksitellen tiirata läpi ja tarkoittaisi moninkertaista, ainakin noin 5-8 kertaa tuon 75 kohtaa käydä manuaalisesti läpi. Kokeilin myös pivottia, mutta sehän vai luo uuden taulukon. Eli jokin automatisoitu keino on oltava olemassa. Makroihin en lähtisi tässä sotkeutumaan, kun en juuri mitään niistä ymmärrä. Kiitokset jo etukäteen avullisista vastauksista! :)
 
Mitä jos vaan generoisit listan pythonilla? Ainakin oma kokemus on se että excelit yms. taulukkolaskentaohjelmat tekee monesta asiasta varsin monimutkaisia ja tehottomia.

Tiedosto csv:ksi:
Koodi:
Myyntiryhmä,Tyyppi,Artisti,Levyn nimi,Julk. vuosi,Levy-yhtiö,Myyntihinta-arvio,Ryhmän hinta
1,CD,Pekka,Pekka,2031,Peräkylä Oy,2 €,
1,CD,Simo,Iskelmä-Simo,2025,Grammari,5 €,
1,C-kasetti,Timo,Rokki-Timo,2020,Stratocaster 666,6 €,
1,CD,Dimo,Greatest Shits Ever,1991,Rockdealer,5 €,18 €
2,CD,Abdullah Mohammad Muhammed,Alahu Akbar,2001,Yorker 911,49 €,
2,jne.,jne.,jne.,jne.,jne.,jne.,...

Muutama rivi pyyttonia:
Python:
import csv

taulukko_csv_path = "taulukko_luetteloksi.csv"

def parsiLuettelo(filepath: str) -> dict:
    luettelodict = {}
    headers = []
    
    with open(filepath) as csvfilee:
        getHeaders = True
        taulukonsisalto = csv.reader(csvfilee, delimiter=",")
        for row in taulukonsisalto:
            if getHeaders:
                getHeaders = False
                headers = row
            else:
                myyntinimike = {}
                myyntiryhma = row[0]

                for i, header in enumerate(headers):
                    if i == 0:
                        if myyntiryhma not in luettelodict:
                            luettelodict[myyntiryhma] = {"myynnit" : [], "ryhman_hinta" : None}
                    elif header == "Ryhmän hinta" and row[i] != "":
                        ryhman_hinta = row[i]
                        luettelodict[myyntiryhma]["ryhman_hinta"] = ryhman_hinta
                    else:
                        myyntinimike.update({header: row[i]})
                luettelodict[myyntiryhma]["myynnit"].append(myyntinimike)
    return luettelodict

def tulostaLuettelo(luettelo: dict):
    for myyntiryhma in luettelo:
        for myynti in luettelo[myyntiryhma]["myynnit"]:
            print(f"Myyntiryhmä: {myyntiryhma}\n{myynti["Tyyppi"]}\n{myynti["Artisti"]}\n{myynti["Levyn nimi"]}\n{myynti["Julk. vuosi"]}\n{myynti["Levy-yhtiö"]}\ntallenteen hinta: {myynti["Myyntihinta-arvio"]}\n")
        print(f"Myyntiryhmän hinta: {luettelo[myyntiryhma]["ryhman_hinta"]}\n\n")
                  

if __name__ == "__main__":
    tassapaseluetteloolisi = {}
    tassapaseluetteloolisi = parsiLuettelo(taulukko_csv_path)
    tulostaLuettelo(tassapaseluetteloolisi)

Tulostuu tämmöstä:

Koodi:
Myyntiryhmä: 1
CD
Pekka
Pekka
2031
Peräkylä Oy
tallenteen hinta: 2 €

Myyntiryhmä: 1
CD
Simo
Iskelmä-Simo
2025
Grammari
tallenteen hinta: 5 €

Myyntiryhmä: 1
C-kasetti
Timo
Rokki-Timo
2020
Stratocaster 666
tallenteen hinta: 6 €

Myyntiryhmä: 1
CD
Dimo
Greatest Shits Ever
1991
Rockdealer
tallenteen hinta: 5 €

Myyntiryhmän hinta: 18 €


Myyntiryhmä: 2
CD
Abdullah Mohammad Muhammed
Alahu Akbar
2001
Yorker 911
tallenteen hinta: 49 €

Myyntiryhmä: 2
jne.
jne.
jne.
jne.
jne.
tallenteen hinta: jne.

Myyntiryhmän hinta: ...
 

Statistiikka

Viestiketjuista
290 701
Viestejä
4 974 472
Jäsenet
79 827
Uusin jäsen
IisakkiL

Hinta.fi

Back
Ylös Bottom