首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python中,在大熊猫的工作表中将值写入特定的单元格

在python中,在大熊猫的工作表中将值写入特定的单元格
EN

Stack Overflow用户
提问于 2016-10-01 10:46:17
回答 4查看 83.7K关注 0票数 20

我有一个excel表,它已经在一些单元格中有了一些值。

代表前任:-

代码语言:javascript
代码运行次数:0
运行
复制
        A      B      C      D
1      val1   val2          val3
2             valx   valy        

我想让熊猫写到特定的细胞上,而不接触任何其他的细胞,薄片等

这是我试过的密码。

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
from openpyxl import load_workbook

df2 = pd.DataFrame({'Data': [13, 24, 35, 46]})
book = load_workbook('b.xlsx')
writer = pd.ExcelWriter('b.xlsx', engine='openpyxl')

df2.to_excel(writer, "Sheet1", startcol=7,startrow=6)

writer.save()

但是,此代码删除旧的单元格值。

我已经回复到:- How to write to an existing excel file without overwriting data (using pandas)?,但是这个解决方案不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-15 14:51:41

我不能用熊猫来做我在问题中要求做的事情,但是我能够用Openpyxl来解决这个问题。

我将编写一些有助于实现所要求的内容的代码片段。

代码语言:javascript
代码运行次数:0
运行
复制
import openpyxl

# to open the excel sheet and if it has macros
srcfile = openpyxl.load_workbook('docname.xlsx', read_only=False, keep_vba=True)

# get sheetname from the file
sheetname = srcfile.get_sheet_by_name('sheetname')
# write something in B2 cell of the supplied sheet
sheetname['B2'] = str('write something')
# write to row 1,col 1 explicitly, this type of writing is useful to
# write something in loops
sheetname.cell(row=1, column=1).value = 'something'

# save it as a new file, the original file is untouched and here I am saving
# it as xlsm(m here denotes macros).
srcfile.save('newfile.xlsm')

因此Openpyxl写入一个紫色的单元格,而不接触其他的工作表、单元格等等。它基本上是写到一个新的文件中,涉及到原始文件的属性。

票数 12
EN

Stack Overflow用户

发布于 2016-10-01 12:58:18

UPDATE2:将数据附加到现有的Excel表,保存其他(旧的)工作表:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
from openpyxl import load_workbook

fn = r'C:\Temp\.data\doc.xlsx'

df = pd.read_excel(fn, header=None)
df2 = pd.DataFrame({'Data': [13, 24, 35, 46]})

writer = pd.ExcelWriter(fn, engine='openpyxl')
book = load_workbook(fn)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer, sheet_name='Sheet1', header=None, index=False)
df2.to_excel(writer, sheet_name='Sheet1', header=None, index=False,
             startcol=7,startrow=6)

writer.save()

更新:文件没有标题,因此您应该相应地处理它:

代码语言:javascript
代码运行次数:0
运行
复制
In [57]: df = pd.read_excel(fn, header=None)

In [58]: df
Out[58]:
     0    1
0  abc  def
1  ghi  lmn

In [59]: df2
Out[59]:
   Data
0    13
1    24
2    35
3    46

In [60]: writer = pd.ExcelWriter(fn)

In [61]: df.to_excel(writer, header=None, index=False)

In [62]: df2.to_excel(writer, startcol=7,startrow=6, header=None, index=False)

In [63]: writer.save()

旧答案:

您可以使用以下技巧:

首先,将excel文件的现有内容读入新的DF:

代码语言:javascript
代码运行次数:0
运行
复制
In [17]: fn = r'C:\Temp\b.xlsx'

In [18]: df = pd.read_excel(fn)

In [19]: df
Out[19]:
       A      B     C      D
0   val1    NaN  val3   val4
1  val11  val22   NaN  val33

现在我们可以将它写回并附加一个新的DF2:

代码语言:javascript
代码运行次数:0
运行
复制
In [20]: writer = pd.ExcelWriter(fn)

In [21]: df.to_excel(writer, index=False)

In [22]: df2.to_excel(writer, startcol=7,startrow=6, header=None)

In [23]: writer.save()

票数 18
EN

Stack Overflow用户

发布于 2019-01-28 12:49:55

使用熊猫读取excel并追加文件

代码语言:javascript
代码运行次数:0
运行
复制
def getpayment_excel(request):
    df = pd.read_excel(open(str(settings.MEDIA_ROOT)+"/"+"details.xlsx", 'rb'), sheetname='Sheet1')
    XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    response = HttpResponse(content_type=XLSX_MIME)
    response['Content-Disposition'] = 'attachment; filename="PythonExport.xlsx"'
    writer = pd.ExcelWriter(response, engine='xlsxwriter')
    df.loc[0,'Bank Name'] = "ICICIW"
    df.to_excel(writer, 'Sheet1', index=False)
    writer.save()
    return response
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39805677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档