pythonexcelopenpyxlxlrdpyxll

Read and manipulate xlsx file from local storage and extract some of the values from cells into .txt and .csv files


Read excel file and extract the details into a new .txt file using openpyxl

I am new to openpyxl, just started yesterday. I need to extract the data from the excel file from my local storage that excel file have 500+ rows and 50+ columns. I want to extract some specific cells or columns or rows into the .txt and .csv file.

I cannot find where is the mistake what to add in this code

from openpyxl import *
import os    

path = 'F:\\mis'
files = [i for i in os.listdir(path) if i.endswith('.xlsx')]

for f in files:
     wb = load_workbook(os.path.join(path, f))
     for row in wb['newxl.xlsx'].rows:
         with open(row[2].value+'.txt', 'w') as outfile:
              outfile.write(row[0].value)```

Solution

  • UPDATED ANSWER

    import openpyxl
    import csv
          
    roster = openpyxl.load_workbook('roster.xlsx')
    sheet = roster.active
    col = csv.writer(open("new_roster.csv",'w',newline=""))
    
    st_id = int(input("Enter student ID: "))
    for row in sheet.rows:
        if row[0].value == st_id:
            col.writerow([cell.value for cell in row])
    print("File created!")
    

    UPDATE 2

    This is how you can get the values from a specific column:

    import openpyxl
    roster = openpyxl.load_workbook('roster.xlsx')  
    sheet = roster.active
    col = sheet['B']  
    
    for x in range(len(col)): 
        print(col[x].value) 
    

    UPDATE 3

    Return specific values from column:

    import openpyxl
    
    roster = openpyxl.load_workbook('roster.xlsx')  
    sheet = roster.active
    
    col = sheet['B']  # <-- change the column according to your file
    val = input("Enter value: ")
    for c in range(len(col)): 
        if val == col[c].value:
            print(f'Found {col[c].value}!')