我有一个QTableWidget,我将此表中的数据导出到一个csv文件中。但是现在,我想打开一个现有的csv文件,并使用此数据填充我的表。我该怎么做?
这是我的导出代码,我想要一个“填充”代码,我真的不知道该怎么做。.我知道如何读取一个csv,但我不知道如何用此csv数据填充我的表。
def export(self):
nomeArquivo = "nomeArquivo"
filename = unicode(QFileDialog.getSaveFileName(self, "Document - Choose Export File", nomeArquivo+".csv"))
if not filename:
return
self.model.sort()
fh = None
try:
fh = QFile(filename)
if not fh.open(QIODevice.WriteOnly):
raise IOError, unicode(fh.errorString())
stream = QTextStream(fh)
stream.setCodec("UTF-8")
for row in range(self.model.rowCount()):
TSentence = self.model.data(
self.model.index(row, TABELA.SENTENCE)).toString()
TIrony = self.model.data(
self.model.index(row, TABELA.IRONY)).toString()
stream << "\""<< TSentence << "\"" << ";" << "\""<< TIrony <<"\"" <<"\n"
except (IOError, OSError), e:
QMessageBox.warning(self, "Text - Error",
"Failed to export: %s" % e)
finally:
if fh:
fh.close()
QMessageBox.warning(self, "Text - Export",
"Successfully exported text to %s" % filename)
看起来您可以在csv
此处使用该模块:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import csv
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
from PyQt4 import QtGui, QtCore
class MyWindow(QtGui.QWidget):
def __init__(self, fileName, parent=None):
super(MyWindow, self).__init__(parent)
self.fileName = fileName
self.model = QtGui.QStandardItemModel(self)
self.tableView = QtGui.QTableView(self)
self.tableView.setModel(self.model)
self.tableView.horizontalHeader().setStretchLastSection(True)
self.pushButtonLoad = QtGui.QPushButton(self)
self.pushButtonLoad.setText("Load Csv File!")
self.pushButtonLoad.clicked.connect(self.on_pushButtonLoad_clicked)
self.pushButtonWrite = QtGui.QPushButton(self)
self.pushButtonWrite.setText("Write Csv File!")
self.pushButtonWrite.clicked.connect(self.on_pushButtonWrite_clicked)
self.layoutVertical = QtGui.QVBoxLayout(self)
self.layoutVertical.addWidget(self.tableView)
self.layoutVertical.addWidget(self.pushButtonLoad)
self.layoutVertical.addWidget(self.pushButtonWrite)
def loadCsv(self, fileName):
with open(fileName, "rb") as fileInput:
for row in csv.reader(fileInput):
items = [
QtGui.QStandardItem(field)
for field in row
]
self.model.appendRow(items)
def writeCsv(self, fileName):
with open(fileName, "wb") as fileOutput:
writer = csv.writer(fileOutput)
for rowNumber in range(self.model.rowCount()):
fields = [
self.model.data(
self.model.index(rowNumber, columnNumber),
QtCore.Qt.DisplayRole
)
for columnNumber in range(self.model.columnCount())
]
writer.writerow(fields)
@QtCore.pyqtSlot()
def on_pushButtonWrite_clicked(self):
self.writeCsv(self.fileName)
@QtCore.pyqtSlot()
def on_pushButtonLoad_clicked(self):
self.loadCsv(self.fileName)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow("/path/to/MyFile.csv")
main.show()
sys.exit(app.exec_())
PyQt5版本:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import csv
from PyQt5 import QtCore, QtGui, QtWidgets
class MyWindow(QtWidgets.QWidget):
def __init__(self, fileName, parent=None):
super(MyWindow, self).__init__(parent)
self.fileName = fileName
self.model = QtGui.QStandardItemModel(self)
self.tableView = QtWidgets.QTableView(self)
self.tableView.setModel(self.model)
self.tableView.horizontalHeader().setStretchLastSection(True)
self.pushButtonLoad = QtWidgets.QPushButton(self)
self.pushButtonLoad.setText("Load Csv File!")
self.pushButtonLoad.clicked.connect(self.on_pushButtonLoad_clicked)
self.pushButtonWrite = QtWidgets.QPushButton(self)
self.pushButtonWrite.setText("Write Csv File!")
self.pushButtonWrite.clicked.connect(self.on_pushButtonWrite_clicked)
self.layoutVertical = QtWidgets.QVBoxLayout(self)
self.layoutVertical.addWidget(self.tableView)
self.layoutVertical.addWidget(self.pushButtonLoad)
self.layoutVertical.addWidget(self.pushButtonWrite)
def loadCsv(self, fileName):
with open(fileName, "r") as fileInput:
for row in csv.reader(fileInput):
items = [
QtGui.QStandardItem(field)
for field in row
]
self.model.appendRow(items)
def writeCsv(self, fileName):
with open(fileName, "w") as fileOutput:
writer = csv.writer(fileOutput)
for rowNumber in range(self.model.rowCount()):
fields = [
self.model.data(
self.model.index(rowNumber, columnNumber),
QtCore.Qt.DisplayRole
)
for columnNumber in range(self.model.columnCount())
]
writer.writerow(fields)
@QtCore.pyqtSlot()
def on_pushButtonWrite_clicked(self):
self.writeCsv(self.fileName)
@QtCore.pyqtSlot()
def on_pushButtonLoad_clicked(self):
self.loadCsv(self.fileName)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow("data.csv")
main.show()
sys.exit(app.exec_())
此应用程序将在Person类的帮助下写入和读取csv文件。它不会用数据填充表。我试图在将csv文件加载到list=new ArrayList()的同时执行表的加载,方法是将相同的数据加载到plist=new ArrayList(),然后将此plist传输到data=FXCollections。可观察列表(plist) 请解释此代码失败的地方。是否无法在加载列表ArrayList的同时加载obser
我正在将一个CSV文件中的20000行数据导入Mysql。 CSV中的列与MySQL表中的列的顺序不同。如何自动分配Mysql表列对应的列? 当我执行 此查询将所有数据添加到第一列。 请建议将数据导入Mysql的自动语法。
series(string $value,[ string $categories]) string $value $config = ['path' => './tests']; $fileObject = new \Vtiful\Kernel\Excel($config); $fileObject = $fileObject->fileName('tutorial.xlsx'); $
factory 辅助函数 必须 使用 factory 方法来做数据填充,因为是框架提倡的,并且可以同时为测试代码服务。 运行效率 开发数据填充时,必须 特别注意 php artisan db:seed 的运行效率,否则随着项目的代码量越来越大,db:seed 的运行时间会变得越来越长,有些项目多达几分钟甚至几十分钟。 原则是: Keep it lighting speed. 只有当 db:seed
简介 Laravel 可以用 seed 类轻松地为数据库填充测试数据。所有的 seed 类都存放在 database/seeds 目录下。你可以任意为 seed 类命名,但是更应该遵守类似 UsersTableSeeder 的命名规范。Laravel 默认定义的一个 DatabaseSeeder 类。可以在这个类中使用 call 方法来运行其它的 seed 类从而控制数据填充的顺序。 编写 See
问题内容: 我有一个带有表,组合框的框架,我想通过组合框用数据库中的数据填充表,但是如果我与itemlistener一起使用,我不会看到没有itemlistener的表,然后我会看到包含数据的表(combob = combobox) 问题答案: 您有几个问题: 您使用不正确。您的代码可能可以运行(我不确定),但是它没有利用的功能。 从ResultSet读取数据的代码没有意义,因为您甚至根本没有从R