Sponsored Content
Top Forums Programming Read .xlsx and text files in a loop using openpyxl Post 302998484 by durden_tyler on Friday 2nd of June 2017 12:29:12 PM
Old 06-02-2017
Quote:
Originally Posted by nans
...
Code:
#!/usr/bin/python

import os
from openpyxl.reader.excel import load_workbook
from openpyxl.drawing.image import Image
import csv

directoryPath = r'/REPORTS/'
os.chdir(directoryPath)
folder_list = os.listdir(directoryPath)
for folders, sub_folders, file in os.walk(directoryPath):  
    for name in file:
        if name.endswith(".xlsx"):
            filename = os.path.join(folders, name)
            wb = load_workbook(filename, data_only=True)
            ws = wb.get_sheet_by_name('Filtered')

##here is where the text files are stored
            directory = os.path.join("/REPORTS/temp", "path")
            for root,dirs,files in os.walk(directory):
               for file in files:
                    if file.endswith(".txt"):
                        f = open(textfile, 'r')
                        reader = csv.reader(f, delimiter='\t')
                        for row in reader:
                           ws.append(row)
                           wb.save(filename)

Although the code goes through all excel files, it is not going through the text files to write its corresponding result onto the 2nd worksheet of each excel file. Any suggestions to edit the code ?
You are not opening the correct text file. That's the reason your script doesn't work.
Keep in mind that given the Excel file "1.xlsx", you want to open "1.txt".
Here, "1" is the keyword.
As long as the files "N.xlsx" and "N.txt" (where N = 1, 2, 3, ... etc.) are linked via "N", you can exploit this feature in your code as follows:

Code:
import os
from openpyxl.reader.excel import load_workbook
from openpyxl.drawing.image import Image
import csv

xl_directory = r'<path_to_Excel_directory>'
txt_directory = r'<path_to_text_directory>'

for xl_root, xl_dirs, xl_files in os.walk(xl_directory):
    for xl_file in xl_files:
        if xl_file.endswith('.xlsx'):
            xl_abs_file = os.path.join(xl_root, xl_file)
            wb = load_workbook(xl_abs_file, data_only = True)
            ws = wb.get_sheet_by_name('Filtered')
  
            # Now search for the corresponding text file.
            # Note: if xl_file = '1.xlsx', then xl_file.replace('xlsx', 'txt')
            # returns '1.txt' - the corresponding text file name. If this doesn't
            # hold true, then a different algorithm will be required.
            for txt_root, txt_dirs, txt_files in os.walk(txt_directory):
                for txt_file in txt_files:
                    if txt_file == xl_file.replace('xlsx', 'txt'):
                        fh = open(txt_file, 'r')
                        reader = csv.reader(fh, delimiter = '\t')
                        for row in reader:
                            ws.append(row)
                            wb.save(xl_abs_file)

These 2 Users Gave Thanks to durden_tyler For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

help with a 'while read' loop to change the names of files

Hi, I am new to scripting, so any help on this would be much appreciated. I am trying to rename a bunch of files, taking the names sequentially from a list read in another file... # ls oldnames file_1 file_2 file_3 # cat names red yellow green I want the files to take on the... (6 Replies)
Discussion started by: starsky
6 Replies

2. Shell Programming and Scripting

Read and edit multiple files using a while loop

Hi all, I would like to simply read a file which lists a number of pathnames and files, then search and replace key strings using a few vi commands: :1,$s/search_str/replace_str/g<return> but I am not sure how to automate the <return> of these vis commands when I am putting this in a... (8 Replies)
Discussion started by: cyberfrog
8 Replies

3. Shell Programming and Scripting

Text to xlsx conversion

Hi Guys, The code snippet below is working fine with xls 2003 but the same is not working in xlsx 2007. Can someone please help. #Convert .txt file format to .xls format awk 'BEGIN{ FS="|" cols=8 print "<HTML><style type=\"text/css\">td{mso-number-format:\"\@\"}</style><BODY><TABLE... (1 Reply)
Discussion started by: icefish
1 Replies

4. Fedora

How to read a text file and assign the values in the same to a variable in loop

Hi, I have a text file with multiple lines, each having data in the below format <DOB>,<ADDRESS> I have to write a script which reads each line in the text file in loop, assign the values to these variables and do some further processing in it. Using the following code prints the... (1 Reply)
Discussion started by: manishab00
1 Replies

5. UNIX for Advanced & Expert Users

How to read a text file and assign the values in the same to a variable in loop

Hi, I have a text file with multiple lines, each having data in the below format <DOB>,<ADDRESS> I have to write a script which reads each line in the text file in loop, assign the values to these variables and do some further processing in it. Using the following code prints the values... (12 Replies)
Discussion started by: manishab00
12 Replies

6. Shell Programming and Scripting

Perl :Is it possible to read the excel 2007 sheet on unix machine using spredsheet::xlsx module

I have an Excel 2007 excel sheet on windows machine and using Spreadsheet::XLSX I had written a script to read the excel sheet and was successful. My requirement is I need to generate another excel sheet from the old excel 2007 sheet on unix machine. Now is it possible to read the excel... (2 Replies)
Discussion started by: giridhar276
2 Replies

7. Shell Programming and Scripting

For loop inside awk to read and print contents of files

Hello, I have a set of files Xfile0001 - Xfile0021, and the content of this files (one at a time) needs to be printed between some line (lines start with word "Generated") that I am extracting from another file called file7.txt and all the output goes into output.txt. First I tried creating a for... (5 Replies)
Discussion started by: jaldo0805
5 Replies

8. Shell Programming and Scripting

Read n lines from a text files getting n from within the text file

I dont even have a sample script cause I dont know where to start from. My data lookes like this > sat#16 #data: 15 site:UNZA baseline: 205.9151 0.008 -165.2465 35.8109 40.6685 21.9148 121.1446 26.4629 -18.4976 33.8722 0.017 -165.2243 48.2201 40.6908 ... (8 Replies)
Discussion started by: malandisa
8 Replies

9. Shell Programming and Scripting

Read text between regexps and write into files based on a field in the text

Hi, I have a huge file that has data something like shown below: huge_file.txt start regexp Name=Name1 Title=Analyst Address=Address1 Department=Finance end regexp some text some text start regexp Name=Name2 Title=Controller Address=Address2 Department=Finance end regexp (7 Replies)
Discussion started by: r3d3
7 Replies

10. Shell Programming and Scripting

Read loop from two files using descriptors

What I would like to do is read each line in the atdinfile: A sample atdinfile would look like this: 651 652 653 654 655 656 657 658 659 660 661 664 665 666 667 668 (5 Replies)
Discussion started by: woodson2
5 Replies
All times are GMT -4. The time now is 09:20 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy