非常抱歉之前的回答没有完全理解您的需求。根据您的需求,我们需要在用户选择工作簿后缀后,打开对应的工作簿文件。请使用以下代码来实现该功能:
import pandas as pd
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QComboBox, QMessageBox, QPushButton, QFileDialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("工作簿格式转换")
self.setGeometry(100, 100, 400, 300)
self.file_combo = QComboBox(self)
self.file_combo.setGeometry(50, 50, 300, 30)
self.sheet_combo = QComboBox(self)
self.sheet_combo.setGeometry(50, 100, 300, 30)
self.column_combo = QComboBox(self)
self.column_combo.setGeometry(50, 150, 300, 30)
self.format_combo = QComboBox(self)
self.format_combo.setGeometry(50, 200, 300, 30)
self.convert_button = QPushButton("转换", self)
self.convert_button.setGeometry(150, 250, 100, 30)
self.convert_button.clicked.connect(self.convert)
self.load_files()
self.file_combo.currentIndexChanged.connect(self.load_sheets)
self.sheet_combo.currentIndexChanged.connect(self.load_columns)
def load_files(self):
self.file_combo.clear()
# 使用QFileDialog让用户选择要打开的工作簿文件
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
file, _ = QFileDialog.getOpenFileName(self, "选择工作簿文件", "", "Excel Files (*.xls *.xlsx)", options=options)
if file:
self.file_combo.addItem(file)
def load_sheets(self):
self.sheet_combo.clear()
# 在这里读取用户指定文件的所有sheet名
filename = self.file_combo.currentText()
sheets = pd.read_excel(filename, sheet_name=None).keys()
self.sheet_combo.addItems(sheets)
def load_columns(self):
self.column_combo.clear()
# 在这里读取用户指定sheet的所有列名称
filename = self.file_combo.currentText()
sheetname = self.sheet_combo.currentText()
df = pd.read_excel(filename, sheet_name=sheetname)
columns = df.columns.tolist()
self.column_combo.addItems(columns)
def convert(self):
# 获取用户选择的转换后的单元格格式
format_str = self.format_combo.currentText()
# 在这里进行格式转换并写入到转换后的列中
filename = self.file_combo.currentText()
sheetname = self.sheet_combo.currentText()
column_name = self.column_combo.currentText()
# 进行格式转换操作,并将结果写入"转换后列"
df = pd.read_excel(filename, sheet_name=sheetname)
# 假设我们将选定的列的每个单元格都转换为指定的格式,这里使用"文本"作为示例
df = df.astype(str)
with pd.ExcelWriter(filename, engine="openpyxl") as writer:
writer.book = load_workbook(filename)
df.to_excel(writer, sheet_name=sheetname, index=False)
QMessageBox.information(self, "转换成功", "格式转换成功!")
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
这样,用户将能够通过对话框选择所需的工作簿文件,并根据后缀自动打开相应的文件。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |