作者:聪头丶_505 | 来源:互联网 | 2023-09-13 19:16
我将表格中的任何数据填写完毕,然后导出文件(CSV)。到目前为止还可以。但是,当我打开CSV文件时,我注意到我填充的行之间有空行。
怎么解决呢?运行代码,填写表格,导出并查看文件以了解。非常感谢你。上帝保佑你。
Scaffold(
floatingactionButtonLocation: FloatingactionButtonLocation.centerDocked,floatingactionButton: FloatingactionButton(
backgroundColor: Colors.white,child: Image.asset("images/paw.png"),onpressed: () {
Navigator.push(
context,MaterialPageRoute(builder: (context) => Map()));
},),bottomNavigationBar: BottomAppBar(
shape: CircularNotchedRectangle(),child: new Row(
mainAxisSize: MainAxisSize.max,mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [
IconButton(
icon: Icon(Icons.menu),color: Colors.transparent,onpressed: () {},],color: Utiles.primary_bg_color,body: Container(...)
look the empty rows in the CSV file
如果在记事本或其他一些基本的文本编辑器中打开CSV文件,则会看到数据以每行数据之间的空格保存。由于EXCEL会在每行中读取CSV,因此它将始终以这种方式导入EXCEL。
您唯一能做的就是手动输入并从CSV中删除行,建立一个宏以在事件发生后为您清理,或编辑发生问题的tkintertable
库。
用于tkintertable
的GitHub的“用法”页面似乎没有有关导出为CSV的任何详细信息,从而可以解决此问题。我猜这个库如何处理数据只是一个问题。
即使添加运行命令以导出的Button也会遇到同样的问题。
def export_to_csv():
table.exportTable()
Button(root,text='test CSV',command=export_to_csv).pack()
Usage
更新:
在进行一些挖掘和认识之后,tkintertable
使用了csv
的librarty来写入csv,我对使用csv
库来写入csv的同一问题进行了一些搜索,发现了这一点发布(csv.write skipping lines when writing to csv)。在那篇文章中,我在tkintertable
库中进行了一些挖掘,以查找写作发生的位置,这就是我发现的内容。
在数据之间插入新行似乎是csv
库如何写入数据的结果。如果我们深入研究,您会发现将表写入CSV的tkintertable
类称为ExportTableData
。该类如下:
class TableExporter:
def __init__(self):
"""Provides export utility methods for the Table and Table Model classes"""
return
def ExportTableData(self,table,sep=None):
"""Export table data to a comma separated file"""
parent=table.parentframe
filename = filedialog.asksaveasfilename(parent=parent,defaultextension='.csv',filetypes=[("CSV files","*.csv")] )
if not filename:
return
if sep == None:
sep = ','
writer = csv.writer(open(filename,"w"),delimiter=sep)
model=table.getModel()
recs = model.getAllCells()
#take column labels as field names
colnames = model.columnNames
collabels = model.columnlabels
row=[]
for c in colnames:
row.append(collabels[c])
writer.writerow(row)
for row in recs.keys():
print(row)
writer.writerow(recs[row])
return
如果我们更新此行:
writer = csv.writer(open(filename,delimiter=sep)
要包含lineterminator = '\n'
,您会发现问题已消失:
writer = csv.writer(open(filename,delimiter=sep,lineterminator = '\n')
结果:
记住编辑库可能不是一个好主意,但在这种情况下,我认为这是您唯一的选择。
要进入此类,您需要在Tables_IO.py
库中打开名为tkintertable
的python文件。
如果您使用的是PyCharm,则可以使用CTRL +左键单击浏览库文件。
先按Ctrl +单击导入名称
。然后,您将Ctrl +单击导入名称
。然后,您将搜索名为exportTable
的类方法,然后在该方法内按住Ctrl键并单击
。这将带您进入您可以编辑以解决问题的上述类。
请注意不要编辑其他任何内容,因为您很容易破坏库,并且在这种情况下需要重新安装。