python的图形化界面中关于Excel表格的导入和导出操作

python中比较常用的Excel操作来自于pandas中,导入很简单,通过如下操作先选择导入文件的位置:

openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx , *.xls)')
global path_openfile_name   ##声明全局变量
path_openfile_name = openfile_name[0]

openfile_name为自己命名的变量名称。然后通过pandas中的read_excel方法即可

input_table = pd.read_excel(path_openfile_name)

但是读取出来的input_table为dataframe类型,若要显示到图形化界面中,还需要转换为表格内容

        input_table_rows = input_table.shape[0]
        input_table_colunms = input_table.shape[1]
        input_table_header = input_table.columns.values.tolist()
        ###===========读取表格,转换表格,============================================
        ###======================给tablewidget设置行列表头============================
        self.tableWidget.setColumnCount(input_table_colunms)
        self.tableWidget.setRowCount(input_table_rows)
        self.tableWidget.setHorizontalHeaderLabels(input_table_header)

        ###======================给tablewidget设置行列表头============================
        ###================遍历表格每个元素,同时添加到tablewidget中========================
        for i in range(input_table_rows):
            input_table_rows_values = input_table.iloc[[i]]
            input_table_rows_values_array = np.array(input_table_rows_values)
            input_table_rows_values_list = input_table_rows_values_array.tolist()[0]

            for j in range(input_table_colunms):
                input_table_items_list = input_table_rows_values_list[j]

        ###==============将遍历的元素添加到tablewidget中并显示=======================
                input_table_items = str(input_table_items_list)
                newItem = QTableWidgetItem(input_table_items)
                newItem.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter)
                self.tableWidget.setItem(i, j, newItem)
        ###===============遍历表格每个元素,同时添加到tablewidget中========================
                item1 = self.tableWidget.item(i, j).text()

由于用的是pyQt5编写的界面,代码中的tablewidget指的是用pyqt5制作的图形化界面的显示表格的文本区

导出Excel时同样首先指定一个导出的文件位置,并申明为全局变量。

我使用的方法是首先建立一个二维数组,通过for循环将tablewidget中的字符一一对应放入数组中,

input_table = self.tableWidget.item(i, j).text()
output[i][j] = input_table

i,j分别是tablewidget中字符对应的行列,得到一个名为output的二维字符数组

然后将output转换为dataframe型,再通过pandas中的to_excel方法导出即可

        frame = pd.DataFrame(output)

        if path_savefile_name != 0:
            frame.to_excel(path_savefile_name)

path_savefile_name即声明的导出文件的全局变量

你可能感兴趣的:(python,pandas,图形化界面,pyQt5,python)