Как читать только видимые ячейки, используя Python? - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу читать и объединять только видимые ячейки в Excel, но у меня не получилось.

Кроме того, я пробовал openpyxl, но не работал. (Найдите мой второй код)

Есть ли другие способы чтения только видимых ячеек и вставки в новый Excel?

Я хочу читать только видимые ячейки, потому что иногда их необходимо фильтровать или скрывать .

Пожалуйста, посоветуйте мне.

В какой модуль я должен войти?

Если каждый модуль Excel не может этого сделать, пожалуйста, дайте мне знать.

Мой текущий код:

import os
import glob
import xlwings as xw
import xlrd
import xlsxwriter


xw.App().visible = False
path = os.getcwd()
x=input('name:') + '.xlsx'
target_xls = os.path.join(path,x)
data = []
for file in glob.glob(path+'\*.*'):
    if file.endswith((".xls", ".xlsm", ".xlsx")):

        wb = xlrd.open_workbook(file)
        for sheet in wb.sheets():
            for rownum in range(sheet.nrows):
                data.append(sheet.row_values(rownum))
        workbook = xlsxwriter.Workbook(target_xls)
        worksheet = workbook.add_worksheet()
        for i in range(len(data)):
            print(range(len(data)))
            for j in range(len(data[i])):
                worksheet.write(i, j, data[i][j])
        workbook.close()

Мой код openpyxl:

import os
import glob
import xlwings as xw
import xlrd
import xlsxwriter


from openpyxl import load_workbook
xw.App().visible = False
path = os.getcwd()
x = input('name:') + '.xlsx'
target_xls = os.path.join(path, x)
data = []
wb = load_workbook('sample.xlsx') 
ws = wb['Sheet1']

for row in ws:

    if ws.row_dimensions[row[0].row].hidden == False:
        for cell in row:
            data.append(cell.value)
    workbook = xlsxwriter.Workbook(target_xls)
    worksheet = workbook.add_worksheet()

    for i in range(len(data)):
        print(range(len(data)))
        for j in range(len(data[i])):
            worksheet.write(i, j, data[i][j])
    workbook.close()

Я хочу прочитать Excel, как показано ниже:

enter image description here

И вывод в:

enter image description here

1 Ответ

0 голосов
/ 20 февраля 2020
#Reference: xlrd manual: https://media.readthedocs.org/pdf/xlrd/latest/xlrd.pdf
#Python Forum Reference: https://python-forum.io/Thread-Identify-Hidden-rows-in-xls
import xlrd

print("Read the VALUE and ROW VISIBILITY from cells A1:A6 in a .xls file from 'Sheet2'.")
print()

######################################################
# Access .xls file (Excel 2003 and before)
excel_filename = "HiddenRow3OnSheet2.xls"

# Open the workbook
#NOTE: Traceback error if 'formatting_info=True' is NOT INCLUDED
xl_workbook = xlrd.open_workbook(excel_filename, formatting_info=True)

#Set the focus on 'Sheet2'
my_sheet_name = "Sheet2"
xl_sheet = xl_workbook.sheet_by_name(my_sheet_name)

print("File: {}".format(excel_filename))
for irow in range(xl_sheet.nrows):
    ihidden = xl_sheet.rowinfo_map[irow].hidden   #Row Visibility 0=Visible 1=Hidden
    if ihidden == True:
        shidden = "VISIBLE"
    else:
        shidden = "HIDDEN"

    svalue = xl_sheet.cell(irow,0).value
    print("Value: {}        Row Visibility: {}".format(svalue, shidden))


######################################################
# Access .xlsx file (Excel 2007 and later)
excel_filename = "HiddenRow3OnSheet2.xlsx"

# Open the workbook
#NOTE: 'formatting_info=True' is NOT SUPPORTED for .xlsx files
xl_workbook = xlrd.open_workbook(excel_filename)

#Set the focus on 'Sheet2'
my_sheet_name = "Sheet2"
xl_sheet = xl_workbook.sheet_by_name(my_sheet_name)

print()
print("File: {}".format(excel_filename))
for irow in range(xl_sheet.nrows):
    svalue = xl_sheet.cell(irow,0).value
    print("Value: {}       Row Visibility: {}".format(svalue, "Not Available for .xlsx files"))
...