将可变数量的字符串值输出到excel worksh中的行

2024-05-29 03:50:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在初级阶段“玩”一点python。你知道吗

我的问题是:

我创建了一个xlsx工作簿,我将在其中写入我在其他文件中解析的数据,首先我要做:

myworkbook = xlsxwriter.Workbook('MyWorkbook.xlsx')
worksheet = workbook.add_worksheet('MyWorksheet')

在解析文件之后,我将感兴趣的数据(类型:str)存储在变量“X”中:

print(X)

0x100
0x200
0x300
0x400
0x500
..
..

仅供参考:

print(type(X)):

<type 'str'>
<type 'str'>
<type 'str'>
<type 'str'>
<type 'str'>

现在我只需要将这些数据输出到我的工作表中 字符串值的数目每次都是可变的。 我想把所有这些值一个接一个地输出到excel行,例如从B5开始,然后从B5++开始,直到有值为止。你知道吗

比如:

worksheet.write_string('B5:Bn', X)

预计产量输出.xlsx地址:

B5    0x100
B6    0x200
B7    0x300
B8    0x400
B9    0x500

Bn    0x...

最简单的方法是什么?你知道吗


Tags: 文件数据typexlsxworkbookprintb5bn
2条回答

如果使用pandas库,那么处理的主要数据类型是dataframe,还可以将其转换为numpy矩阵/数组格式。下面是一个使用pandas库处理excel文件的示例:

enter image description here

import pandas as pd

df = pd.read_excel("test.xlsx", names=["A", "B", "C", "D"]) # load excel file as dataframe with names for the columns
print(df.columns) # see the columns (first row of your data)

a = df[df.columns] # get the values of all columns in a dataframe 'a'
print(a)
print(a.shape)
print(type(a))

b = df[df.columns].values # get the values of all columns in a matrix 'b' (numpy 2darray)
print(b)
print(b.shape) 
print(type(b))

# sample usage on different data types
print(a['A1'][5:10]) # dataframe
print(b[5:10, 0]) # 2D array 

如果不指定名称,则第一行将用作列,除非您这样读:

df = pd.read_excel("test.xlsx", header=None)

所以基本上你需要了解一下数据帧和numpy数组结构。要了解更多信息:

您可以使用下面的openpyxl。这里ws是工作表对象

这里column=2表示B列,行从5开始,一直到x有值为止

>>> n=5
>>> for i in x:
        ws.cell(row=n,column=2,value=i)
        n+=1

如果可以在下一行追加,可以使用下面的

>>> for i in x:
        ws.append([i])

如果您使用的是xlsxwriter模块,请使用下面的

r=5
for i in x:
    worksheet.write(r,2 , i)          # write_string()
    r+=1

根据你的评论,X是一个字符串。首先,您需要将其转换为一个列表以进一步处理

>>> x='''0x100
0x200
0x300
0x400
0x500'''
>>> print x
0x100
0x200
0x300
0x400
0x500
>>> type(x)
<type 'str'>
>>> x=x.split()
>>> type(x)
<type 'list'>
>>> for i in x:
    print i


0x100
0x200
0x300
0x400
0x500
>>> 

相关问题 更多 >

    热门问题