如何使用Python删除ExcelSheet中的一行?
How To Delete A Row In Excel Sheet Using Python?
我正在使用 Python
开发一个 Selenium
程序,我想使用 Openpyxl
库删除 Excel
sheet 中的一行。问题是我不知道如何在我的程序中实现删除功能。下面有 2 个 classes,AutoTest.py
是测试 class 和 NewCard.py
这是我实现 POM(Page Object Model)
的 class。请问如何按照我的程序实现只删除1行的功能?
AutoTest.py
import unittest
import HtmlTestRunner
from selenium import webdriver
import openpyxl
import sys
sys.path.append("C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting")
from pageObjects.LoginPage import LoginPage
from pageObjects.HomePage import Homepage
from pageObjects.NewCard import NewCard
excpath = r"C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\excel\new\ABT0475EC Card Init Detailed Rpt Test 01 - v13_1.xlsx"
excsheetName = "ABT0475EC Card Initialization D"
class AutoTest(unittest.TestCase):
baseURL = "https://10.2.5.215:33000/viewTopUpRequest"
username = "ezltest2svc"
password = "Password123!"
driver = webdriver.Chrome()
@classmethod
def setUpClass(cls):
cls.driver.get(cls.baseURL)
cls.driver.maximize_window()
cls.driver.implicitly_wait(10)
def test_1(self): #This is scenario 1- to create request for new card
lp = LoginPage(self.driver)
hp = Homepage(self.driver)
np = NewCard(self.driver)
lp.setUsername(self.username)
lp.setPassword(self.password)
lp.clickLogin()
hp.clickutil()
hp.clickreqNewCard()
np.setJobOrder()
np.clickExcel()
np.setTopUpAmount()
np.calculateAmount()
if not np.clickSubmit():
np.deleteRow(excpath,excsheetName,3)
else:
print("Test Passed")
# @classmethod
# def tearDownClass(cls):
# cls.driver.close()
# print("Test Completed")
#if __name__ == '__main__':
# unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='C:/Users/lukegoh/Desktop/Python Projects/SoftwareAutomationTesting/reports'))
NewCard.py
import openpyxl
class NewCard:
jobOrder_xpath="//body/div[@id='wrapper']/div[3]/div[1]/div[1]/div[1]/div[1]/input[1]"
excelButton_xpath="//input[@id='img']"
topup_textbox_xpath="//input[@id='input-live']"
calculateAmount_xpath="(//button[@type='button'])[4]"
buttonSubmit_xpath="(//button[@type='button'])[5]"
def __init__(self,driver):
self.driver=driver
def setJobOrder(self):
self.driver.find_element_by_xpath(self.jobOrder_xpath).send_keys("AutoTest1")
def clickExcel(self):
self.driver.find_element_by_xpath(self.excelButton_xpath).send_keys(r"C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\excel\new\ABT0475EC Card Init Detailed Rpt Test 01 - v13_1.xlsx")
def setTopUpAmount(self):
self.driver.find_element_by_xpath(self.topup_textbox_xpath).send_keys("10")
def calculateAmount(self):
self.driver.find_element_by_xpath(self.calculateAmount_xpath).click()
def clickSubmit(self):
self.driver.find_element_by_xpath(self.buttonSubmit_xpath).click()
def deleteRow(file, sheetName, rownum):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
sheet.cell(row=rownum).
workbook.save(file)
使用pandas
import pandas as pd
df = pd.read_excel("test.xlsx")
df = df.drop(df.index[1])
df.to_excel('test1.xlsx')
如果你查看 OpenPyXL 文档,它有一个叫做 delete_rows()
的东西
语法 delete_rows(idx, amount=1)
,它从 idx
中删除并继续删除 amount
import openpyxl
filename = "example.xlsx"
wb = openpyxl.load_workbook(filename)
sheet = wb['Sheet1']
sheet.delete_rows(row_number, 1)
wb.save(filename)
delete_rows()
的文档:https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.worksheet.html#openpyxl.worksheet.worksheet.Worksheet.delete_rows
我正在使用 Python
开发一个 Selenium
程序,我想使用 Openpyxl
库删除 Excel
sheet 中的一行。问题是我不知道如何在我的程序中实现删除功能。下面有 2 个 classes,AutoTest.py
是测试 class 和 NewCard.py
这是我实现 POM(Page Object Model)
的 class。请问如何按照我的程序实现只删除1行的功能?
AutoTest.py
import unittest
import HtmlTestRunner
from selenium import webdriver
import openpyxl
import sys
sys.path.append("C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting")
from pageObjects.LoginPage import LoginPage
from pageObjects.HomePage import Homepage
from pageObjects.NewCard import NewCard
excpath = r"C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\excel\new\ABT0475EC Card Init Detailed Rpt Test 01 - v13_1.xlsx"
excsheetName = "ABT0475EC Card Initialization D"
class AutoTest(unittest.TestCase):
baseURL = "https://10.2.5.215:33000/viewTopUpRequest"
username = "ezltest2svc"
password = "Password123!"
driver = webdriver.Chrome()
@classmethod
def setUpClass(cls):
cls.driver.get(cls.baseURL)
cls.driver.maximize_window()
cls.driver.implicitly_wait(10)
def test_1(self): #This is scenario 1- to create request for new card
lp = LoginPage(self.driver)
hp = Homepage(self.driver)
np = NewCard(self.driver)
lp.setUsername(self.username)
lp.setPassword(self.password)
lp.clickLogin()
hp.clickutil()
hp.clickreqNewCard()
np.setJobOrder()
np.clickExcel()
np.setTopUpAmount()
np.calculateAmount()
if not np.clickSubmit():
np.deleteRow(excpath,excsheetName,3)
else:
print("Test Passed")
# @classmethod
# def tearDownClass(cls):
# cls.driver.close()
# print("Test Completed")
#if __name__ == '__main__':
# unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='C:/Users/lukegoh/Desktop/Python Projects/SoftwareAutomationTesting/reports'))
NewCard.py
import openpyxl
class NewCard:
jobOrder_xpath="//body/div[@id='wrapper']/div[3]/div[1]/div[1]/div[1]/div[1]/input[1]"
excelButton_xpath="//input[@id='img']"
topup_textbox_xpath="//input[@id='input-live']"
calculateAmount_xpath="(//button[@type='button'])[4]"
buttonSubmit_xpath="(//button[@type='button'])[5]"
def __init__(self,driver):
self.driver=driver
def setJobOrder(self):
self.driver.find_element_by_xpath(self.jobOrder_xpath).send_keys("AutoTest1")
def clickExcel(self):
self.driver.find_element_by_xpath(self.excelButton_xpath).send_keys(r"C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\excel\new\ABT0475EC Card Init Detailed Rpt Test 01 - v13_1.xlsx")
def setTopUpAmount(self):
self.driver.find_element_by_xpath(self.topup_textbox_xpath).send_keys("10")
def calculateAmount(self):
self.driver.find_element_by_xpath(self.calculateAmount_xpath).click()
def clickSubmit(self):
self.driver.find_element_by_xpath(self.buttonSubmit_xpath).click()
def deleteRow(file, sheetName, rownum):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
sheet.cell(row=rownum).
workbook.save(file)
使用pandas
import pandas as pd
df = pd.read_excel("test.xlsx")
df = df.drop(df.index[1])
df.to_excel('test1.xlsx')
如果你查看 OpenPyXL 文档,它有一个叫做 delete_rows()
语法 delete_rows(idx, amount=1)
,它从 idx
中删除并继续删除 amount
import openpyxl
filename = "example.xlsx"
wb = openpyxl.load_workbook(filename)
sheet = wb['Sheet1']
sheet.delete_rows(row_number, 1)
wb.save(filename)
delete_rows()
的文档:https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.worksheet.html#openpyxl.worksheet.worksheet.Worksheet.delete_rows