Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
如何在保留单元格信息的同时将Excel文件转换为CSV?_Excel_Python 3.x_Csv - Fatal编程技术网

如何在保留单元格信息的同时将Excel文件转换为CSV?

如何在保留单元格信息的同时将Excel文件转换为CSV?,excel,python-3.x,csv,Excel,Python 3.x,Csv,是否有方法将包含多个选项卡的excel电子表格转换为csv文件(每个选项卡一个),并用单元格信息标记csv中的数据 例如,Excel中的下一行: 在输出csv文件中应如下所示: [A1]Id,[B1]Author Name [A2]1,[B2]Agatha Christie [A3]2,[B3]Ayn Rand [A4]3,[B4]Arthur Conan Doyle 我正在尝试使用Python来实现这一点,这对我来说是相当陌生的。在这里,我遇到了很多关于使用xlrd、pandas等软

是否有方法将包含多个选项卡的excel电子表格转换为csv文件(每个选项卡一个),并用单元格信息标记csv中的数据

例如,Excel中的下一行:

在输出csv文件中应如下所示:

[A1]Id,[B1]Author Name

[A2]1,[B2]Agatha Christie

[A3]2,[B3]Ayn Rand

[A4]3,[B4]Arthur Conan Doyle
我正在尝试使用Python来实现这一点,这对我来说是相当陌生的。在这里,我遇到了很多关于使用xlrd、pandas等软件包将Excel转换为CSV的帖子,但我也想知道是否可以通过某种方式捕获单元格信息


此外,如果有其他方法可以达到此要求,请提供建议。

如果您的数据框如下所示:

df
#>   Id        Author.Name
#> 1  1    Agatha Christie
#> 2  2           Ayn Rand
#> 3  3 Arthur Conan Doyle
"","Id","Author.Name"
"1","[A1] 1","[B1] Agatha Christie"
"2","[A2] 2","[B2] Ayn Rand"
"3","[A3] 3","[B3] Arthur Conan Doyle"
然后你可以这样做:

df <- as.data.frame(mapply(function(x, y) paste0("[", y, 1:length(x), "] ", as.character(x)),
             df, LETTERS[seq_along(df)]))
如果你用

write.csv(df, "df.csv")
那么df.csv的内容将如下所示:

df
#>   Id        Author.Name
#> 1  1    Agatha Christie
#> 2  2           Ayn Rand
#> 3  3 Arthur Conan Doyle
"","Id","Author.Name"
"1","[A1] 1","[B1] Agatha Christie"
"2","[A2] 2","[B2] Ayn Rand"
"3","[A3] 3","[B3] Arthur Conan Doyle"

也许是这样的

from xlrd import open_workbook
from xlwt import Workbook
import os

for file in os.listdir('C:\\your_path_here\\'):
    if file.endswith('.xlsx'):
        rb = open_workbook('C:\\your_path_here\\' + str(file),formatting_info=False)
        num = rb.nsheets

for a in range(num): 

   rs = rb.sheet_by_index(a)
   sheet = (rs.name)

   new_book = Workbook()
   new_sheet = new_book.add_sheet(sheet)

   for row in range(rs.nrows):
       for col in range(rs.ncols):
           new_sheet.write(row, col, rs.cell(row, col).value)

   new_book.save('C:\\your_path_here\\' + str(sheet) + '.csv')

如果您试图用Python实现这一点,为什么要标记R和Java语言?这个问题似乎与这两种语言都没有任何关系。在任何情况下,为了解决您的问题,您可以使用Pandas并只计算细胞信息-这是一种非常规则的模式。感谢您回复EJoshuaS。我在这里探索所有选项——Python、R、Java。任何有助于我实现这一目标的东西。不过,我更喜欢python。但是,如果可以在Python中实现,我将继续删除Java和R标记。我对R不是非常熟悉,但我认为这对于Pandas来说非常简单-模式非常规则,您可以将其导入到数据帧中,计算单元格信息,编辑到每个单元格中,并将其导出到CSV文件。这听起来不错。我还需要学习数据帧(实际上是Python新手)。但我很快会告诉你进展如何。谢谢谢谢你,艾伦。这看起来很简单。我将尝试实际数据,并让您知道它是如何运行的。@Techblink只要您的数据中的列少于26列,它就会工作。如果你有比这更多的,它仍然是可能的,但更复杂。谢谢你的这个解决方案。使用部分逻辑和openpyxl模块,我现在可以从Excel中读取单元格,并将单元格值以及行和列信息保存在文本文件中。您能否提供一些见解,说明在读取Excel文件时,以下哪项最为有效:10-12个工作表,以及每个工作表中要读取的大约30K个单元格-xlrd、openpyxl或pandas?所有这些数据都必须经过处理并保存到每个工作表的一个文本文件中(如原始帖子所述)。如果有帮助,请将其标记为答案。就效率而言,我不确定。您可以轻松地向任何Python脚本添加计时器,并计算任何进程的运行时间。请参阅此链接: