Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写python代码将多个csv组合到excel中,而不让数字在excel中读取为文本?_Python_Excel_Csv - Fatal编程技术网

如何编写python代码将多个csv组合到excel中,而不让数字在excel中读取为文本?

如何编写python代码将多个csv组合到excel中,而不让数字在excel中读取为文本?,python,excel,csv,Python,Excel,Csv,我正在使用这个csv阅读器读取我所有的csv文件,然后合并到xls工作簿中。但在打开excel后,csv中的所有数字现在都被读取为文本 在每个csv中都有字母和数字。有没有办法压缩csv中的所有数值,让excel知道它是数字而不是文本 import glob, csv, xlwt, os wb = xlwt.Workbook() for filename in glob.glob("d:/test/*.csv"): (f_path, f_name) = os.path.split(f

我正在使用这个csv阅读器读取我所有的csv文件,然后合并到xls工作簿中。但在打开excel后,csv中的所有数字现在都被读取为文本

在每个csv中都有字母和数字。有没有办法压缩csv中的所有数值,让excel知道它是数字而不是文本

import glob, csv, xlwt, os

wb = xlwt.Workbook()
for filename in glob.glob("d:/test/*.csv"): 
    (f_path, f_name) = os.path.split(filename)
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(f_short_name)
    spamReader = csv.reader(open(filename, "rt"))

    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            ws.write(rowx, colx, value)
wb.save("d:/test/compiled.xls")
最简单的方法:

            for rowx, row in enumerate(spamReader):
                for colx, value in enumerate(row):
                    try:
                      value = float(value)
                    except ValueError:
                      pass
                    ws.write(rowx, colx, value)
我将使用这个库,它还将连接整个Python数据科学堆栈。Pandas将足够聪明,能够正确解释Excel的数据类型

import glob, os
import pandas as pd

from pandas import DataFrame, ExcelWriter

writer = ExcelWriter("d:/test/compiled.xlsx")

for filename in glob.glob("d:/test/*.csv"):
    df_csv = pd.read_csv(filename)

    (_, f_name) = os.path.split(filename)
    (f_shortname, _) = os.path.splitext(f_name)

    df_csv.to_excel(writer, f_shortname, index=False)

writer.save()

您可以打开一个电子表格进行编写,将每个CSV作为一个文本读取,然后将
数据框
写入单独选项卡上的工作表中。存在
index=False
部分,因此Python不会将默认的
DataFrame
索引写入工作表,这会给您一个额外的不需要的列。

这实际上并没有解决问题,因为追加会将所有csv合并到一个工作表中,而不是分配给多个工作表。谢谢。好的,它是固定的。不幸的是,如果您的CSV非常大,这将遇到内存问题