Skip to content

Commit

Permalink
Update excel_to_text.py
Browse files Browse the repository at this point in the history
optimizing this tools
  • Loading branch information
Bio-MingChen authored Nov 4, 2019
1 parent 3022b49 commit 7d619cb
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions python/excel_to_text.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,31 @@

def excel_to_txt(args):
excel = args.get('excel')
sheet_name = args.get('sheet_name') if args.get('sheet_name') else ''
sheet_number = args.get('sheet_number') if args.get('sheet_number') else ''

sheet_names = args.get('sheet_name')
sheet_numbers = args.get('sheet_number')
book = load_workbook(excel)
sheet_list = []
if sheet_number:
sheet_list += [book.sheetnames[int(i)] for i in sheet_number.strip().split(',')]
if sheet_name and (sheet_name not in sheet_list):
sheet_list += [sheet_name]
if (not sheet_number) and (not sheet_name):
sheet_list = book.sheetnames
if sheet_list:
if args.get('show_sheets'):
print('All sheets in the excel lists blow:\n')
for idx,sheetname in enumerate(book.sheetnames):
print('[{idx}] {sheetname}'.format(idx=idx,sheetname=sheetname))
else:
sheet_list = []
if sheet_numbers:
sheet_list += [book.sheetnames[i] for i in sheet_numbers]
if sheet_names and (sheet_names not in sheet_list):
sheet_list += sheet_names
else:
sheet_list = book.sheetnames

for sheet in sheet_list:
ofile = sheet + time + '.xls'
ofile = sheet + '.' + time + '.xls'
print('Writing %s to %s' % (sheet,ofile))
with open(ofile,'w') as odata:
for row in book[sheet]:
row_list = [cell.value for cell in row]
row_list = [args.get('handle_NA') if i is None else i for i in row_list]
row_list = [args.get('handle_NA') if i is None else str(i) for i in row_list]
odata.write("\t".join(row_list) + "\n")
print('Writing Completion.')
else:
raise IndexError('sheet number out of range!')

if __name__ == "__main__":
parser = argparse.ArgumentParser(
Expand All @@ -46,14 +48,15 @@ def excel_to_txt(args):
Example:
excel_to_txt excel # extract all sheets
excel_to_txt excel --sheet_number 0,1,2
excel_to_txt excel --sheet_name 'xxx'
excel_to_txt excel --sheet_number 0 1 2
excel_to_txt excel --sheet_name "sheet1" "sheetx"
'''
)
parser.add_argument('excel',help='Excel Name')
parser.add_argument('--sheet_number','-num',help='The index of sheet number zero-based')
parser.add_argument('--sheet_name','-name',help='The sheet name')
parser.add_argument('--excel','-e',required=True,help='Excel Name')
parser.add_argument('--sheet_number','-num',nargs="*",default=[],type=int,help='The index of sheet number zero-based')
parser.add_argument('--sheet_name','-name',nargs="*",default=[],help='One or more sheet names')
parser.add_argument('--handle_NA','-NA',default='',
help='what shold be used to replace None objects[default:""]')
parser.add_argument('--show_sheets','-show',action='store_true',help='Show the sheets of excel instead of extracting them')
args = parser.parse_args()
excel_to_txt(vars(args))

0 comments on commit 7d619cb

Please sign in to comment.