Write values to a particular cell in a sheet in pandas in python
<p>I have an excel sheet, which already has some values in some cells.</p>

<p>For ex :- </p>

<pre><code>        A      B      C      D
1      val1   val2          val3
2             valx   valy        
</code></pre>

<p><strong>I want pandas to write to specific cells without touching any other cells,sheet etc</strong></p>

<p>This is the code i tried.</p>

<pre><code>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()
</code></pre>

<p>However this code deletes the older cell values.</p>

<p>I have reffered to :- <a href="http://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas">How to write to an existing excel file without overwriting data (using pandas)?</a>
but this solution does not work.</p>

<p><strong>UPDATE2:</strong> appending data to existing Excel sheet, preserving other (old) sheets:</p>

<pre><code>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()
</code></pre>

<p><strong>UPDATE:</strong> your Excel file doesn't have a header, so you should process it accordingly:</p>

<pre><code>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()
</code></pre>

<p><a href="http://i.stack.imgur.com/CyFhx.png" rel="nofollow"><img src="http://i.stack.imgur.com/CyFhx.png" alt="enter image description here"></a></p>

<p><strong>OLD answer:</strong></p>

<p>You can use the following trick:</p>

<p>first read the existing contents of the excel file into a new DF:</p>

<pre><code>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
</code></pre>

<p>now we can write it back and append a new DF2:</p>

<pre><code>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()
</code></pre>

<p><a href="http://i.stack.imgur.com/edAZY.png" rel="nofollow"><img src="http://i.stack.imgur.com/edAZY.png" alt="enter image description here"></a></p>

python excel pandas