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即声明的导出文件的全局变量