如何在Python中将n行xlsx转换为csv,同时保留date值

我试图将xlsx文件转换为一个CSV文件,其中包含标题和另一个包含实际数据的CSV文件。 我有以下要求:

  1. 标题不是从第一行开始,而是在start_line行。
  2. date不应该被视为浮动,但在一些string格式。
  3. 事先不知道文件的行数或列数。 我也不想指定哪一列是date。

使用pandas我卡在1号。我想在两个单独的读取,我从start_line读start_line+1和从start_line+1到结束读取。 但是,似乎不可能从偏移量中读取n行。 下面是我用来获取一个包含头文件的代码。

 import pandas as pd def parse_excel(file,start_line,sheet,table): sh = pd.read_excel(file,sheet,skiprows=start_line) sh.to_csv("output.csv",sep='\t',encoding='utf-8',index=False) 

接下来,我已经尝试使用xlrd但是这个库将所有date视为像在Excel中的浮动。 唯一的解决方法似乎是通过所有单独的单元格 ,这似乎不是很有效或编码不好。 我现在拥有的:

 import xlrd def parse_excel(file,start_line,sheet,table): with xlrd.open_workbook(file) as wb: sh = wb.sheet_by_name(sheet) header_written = False with open('{0}.csv'.format(table),'wb') as csv_file: wr = csv.writer(csv_file,delimiter='\t') for rownum in range(sh.nrows): if not header_written and start_line == rownum: with open('{0}_header.csv'.format(table),'wb') as header: hwr = csv.writer(header,delimiter='\t') hwr.writerow(sh.row_values(rownum)) header_written = True elif header_written: wr.writerow(sh.row_values(rownum)) 

请给我指向其他的解决scheme/库,显示上述任一解决方法或解释为什么我应该去xlrd解决方法检查每个单独的单元格。

只要你的所有数据都低于你的标题行,那么下面的工作就可以了。 假设标题行在第n行(索引从0开始,而不是像Excel一样)。

 df = pd.read_excel('filepath', header=n) df.head(0).to_csv('header.csv', index=False) df.to_csv('output.csv', header=None, index=False)