如何使用python读取和编辑excel文件

时间:2017-08-09 15:48:04

标签: python excel

我是python的新手,我正在尝试执行以下操作:

我有一个包含两列的Excel数据表。第一个包含名称,第二个包含数据。如果我有一个程序名称,它需要在电子表格中找到该名称,向右移动一个单元格(下一列)读取该值。之后,我有一个小公式来更改值,然后我想将这些数据存储在它来自的同一个单元格中。

之后,它又重新开始。

现在我知道我需要使用xlsxwriter来完成这项工作,但是我无法提出正确的代码。我找到了这个页面: https://www.datacamp.com/community/tutorials/python-excel-tutorial#gs.WWHel8Q 但它并不是我想要的。我不是要求你们给我一个代码,但是你能帮助我朝着正确的方向前进吗? (事实上​​,我宁愿自己编写代码,因为这是一种学习Python的好方法)。

提前致谢!

编辑:

{{1}}

我现在知道了。但它不起作用,D的值保持4.为什么会这样?

2 个答案:

答案 0 :(得分:0)

我认为你应该尝试一下熊猫。您将能够阅读整个表格并对其进行操作。学习如何使用大熊猫并不困难,但它非常有用。

http://pandas.pydata.org/

您将能够做到这样的事情:

df = pd.read_excel('filename')
df.loc[df.col1 == 'name', col2] = formula

首先,您阅读该文件。然后在第一列中找到一个值,并在第二列中修改此行中的值。

<强> UPD

以下是您案例的解决方案。正如我所说,您可以直接修改数据框中的值。代码在&#39; D&#39;中查找行。在列#34;名称&#34;并在列&#39;值&#39;。

中添加50
df = pd.DataFrame(
    {"Name" :['A' ,'B', 'C', 'D', 'E', 'F'],
     "Value" :[1 ,2 ,3 ,4 ,5 ,6]},
    )

df.loc[df.Name == 'D', 'Value'] += 50

df
Name    Value
0   A   1
1   B   2
2   C   3
3   D   54
4   E   5
5   F   6

df.to_excel('Test.xlsx')

答案 1 :(得分:0)

我发现使用 openpyxl

写了一个函数
import openpyxl
import os


def load_FromExcel(filepath, total_row = 999999999999):
    """Using module "openpyxl" to load data from excel file(only support '.xlsx' format)

    Make sure you already install "openpyxl".
    :param filepath:
        Source file should be put under the path beneath the file which is calling this method.
        Otherwise you'll have to change some code inside.
    :return:
        list_row is a list consists of list records.
        For example, list_row[0] is a list consists of these cell in 1st row.
        Therefore, use list_row[0][0] represent the value in 1st column in 1st row(A1).
    """
    filename = os.path.join(os.path.dirname(__file__) + "/../" + filepath)
    # Use "os.path.dirname(__file__)" to get a relevant path
    print(filename)
    # Open a workbook by name= filename in READ-ONLY mode
    wb = openpyxl.load_workbook(filename, read_only=True)
    # Select this worksheet
    sheet = wb.get_active_sheet()
    sheet_rows = tuple(sheet.rows)
    # This is the total amount of rows in the excel file opened
    row_count = len(sheet_rows)
    print(row_count)
    row_count = 0
    list_row = []
    for row in sheet.rows:
        row_count += 1
        temp_list = []
        for cell in row:
            # print(cell.value,end=',')
            temp_list.append(cell.value)
        list_row.append(temp_list)
        if row_count > total_row:
            break
    print("Loading Complete")
    return list_row

在使用您的密码之前,请务必保持自己的编码清洁。