根据这个问题的答案:Stop Excel from automatically converting certain text values to dates我正在尝试使用python的csv模块创建一个CSV文件,某些字段格式为
"=""<string-that-looks-like-a-date>"
但是我无法让CSV编写器生成这样的输出。如果我使用默认的csvwriter(没有特殊参数),并预先格式化我的数据,它会尝试引用我的所有引号,并得到如下所示的输出:
"""=""""6/6"""
如果我将csv writer的引用级别设置为QUOTE_NONE,那么我得到一个“错误:需要转义,但没有转义字符集”。显式设置转义字符会导致我放入的所有引号都被转义。尝试在我的数据中添加等号会导致excel显示
=<string_that_looks_like_a_date>
就这样 - 我尝试的每个报价和格式化数据组合都无法输出所需的格式。
有没有办法让python csvwriter模块输出excel会解释为纯文本的内容而不会在excel中显示任何多余的字符?
答案 0 :(得分:1)
您只需要预先添加="
并将"
附加到您的数据中。例如:
import csv
with open('test.csv', 'wb') as f:
w = csv.writer(f)
data = 'Feb 11'
w.writerow([data]) # Excel will interpret this as a date
w.writerow(['="%s"' % data]) # This is what you want
w.writerow(['="{0}"'.format(data)]) # Or this, same thing
请注意,使用.format()
方法的字符串插值在Python 2.6及更高版本中可用。在Python 2.7中,您可以省略0
。
答案 1 :(得分:0)
def excel_literal_print( string ):
print("=\"{0}\"".format(string) )
输出文件需要读取(除非excel 2007)
value,="date",="time"