Csv 如何使用openpyxl获取单元格的实际值?

Csv 如何使用openpyxl获取单元格的实际值?,csv,openpyxl,Csv,Openpyxl,我是Python的初学者,需要帮助。我使用的是Python2.7,我试图检索excel文件的单元格值并将其存储到csv文件中。我的代码如下: import os, openpyxl, csv aggname = "deu" wb_source = openpyxl.load_workbook(filename, data_only = True) app_file = open(filename,'a') dest_file = csv.writer(app_file, delimiter='

我是Python的初学者,需要帮助。我使用的是Python2.7,我试图检索excel文件的单元格值并将其存储到csv文件中。我的代码如下:

import os, openpyxl, csv
aggname = "deu"

wb_source = openpyxl.load_workbook(filename, data_only = True)
app_file = open(filename,'a')
dest_file = csv.writer(app_file, delimiter=',', lineterminator='\n')

calib_sheet = wb_source.get_sheet_by_name('Calibration')
data = calib_sheet['B78:C88']
data = list(data)
print(data)

for i in range(len(data)):
    dest_file.writerow(data[i])

app_file.close()
在我的csv文件中,我得到的是这个值,而不是实际值(例如,在我的示例中:SFCG,99103)

我收到以下错误消息:

for i in range(len(data)):
   dest_file.writerows(data[i].values)
Traceback (most recent call last):

  File "<ipython-input-78-27828c989b39>", line 2, in <module>
    dest_file.writerows(data[i].values)

AttributeError: 'tuple' object has no attribute 'values'
然后我有以下错误消息:

for i in range(len(data)):
    for j in range(2):
        dest_file.writerow(data[i][j].value)


Traceback (most recent call last):

  File "<ipython-input-80-c571abd7c3ec>", line 3, in <module>
    dest_file.writerow(data[i][j].value)

Error: sequence expected
Traceback (most recent call last):

  File "<ipython-input-81-5bed62b45985>", line 12, in <module>
    dest_file.writerow(cell.value)

Error: sequence expected 
仅获取此错误消息:

for i in range(len(data)):
    for j in range(2):
        dest_file.writerow(data[i][j].value)


Traceback (most recent call last):

  File "<ipython-input-80-c571abd7c3ec>", line 3, in <module>
    dest_file.writerow(data[i][j].value)

Error: sequence expected
Traceback (most recent call last):

  File "<ipython-input-81-5bed62b45985>", line 12, in <module>
    dest_file.writerow(cell.value)

Error: sequence expected 
没有错误消息,但我只获得csv文件中单元格的引用,并将其更改为dest_file.writerow(row.value)将我带回元组错误


我显然还需要你的帮助

您忘了获取单元格的值!请参见

在打印数据时尝试使用数据。值,而不仅仅是数据

希望能有帮助

**

***例如:
导入openpyxl
进口稀土
导入操作系统
wc=openpyxl.load_工作簿(“”)wcsheet=wc.get_sheet_by_name('test'))
存储=[]
对于wcsheet.columns[0]中的数据:
存储=数据
打印(存储值)***
=======================
=================================================

**


“活生生的佛像大小”

我找到了一种使用numpy的方法,它允许我将值存储为列表列表,而不是元组列表

import os, openpyxl, csv
import numpy as np

wb_source = openpyxl.load_workbook(filename, data_only=True)
app_file = open(filename,'a')
dest_file = csv.writer(app_file, delimiter=',', lineterminator='\n')


calib_sheet = wb_source.get_sheet_by_name('Calibration')

store = list(calib_sheet.iter_rows('B78:C88'))
print store

truc = np.array(store)
print truc

for i in range(11):
    for j in range(1):
        dest_file.writerow([truc[i][j].value, truc[i][j+1].value]) 

app_file.close() 

实际上,我在“writerow()”中有一个序列作为我的参数,对于list对象,我还可以使用双索引和value方法来检索单元格的值。

谢谢你,但是当我应用你的建议时,我得到了以下错误:回溯(上次调用):
文件“”,第2行,在dest_File.writerows(数据[I].value)中
AttributeError:“tuple”对象没有属性“value”。。。。很抱歉你没有成功,但很高兴你成功了。。从你身上学到了一些东西
Traceback (most recent call last):

  File "<ipython-input-81-5bed62b45985>", line 12, in <module>
    dest_file.writerow(cell.value)

Error: sequence expected 
wb_source = openpyxl.load_workbook(filename, data_only=True)
app_file = open(filename,'a')
dest_file = csv.writer(app_file, delimiter=',', lineterminator='\n')


calib_sheet = wb_source.get_sheet_by_name('Calibration')

list(calib_sheet.iter_rows('B78:C88'))

for row in calib_sheet.iter_rows('B78:C88'):
        dest_file.writerow(row) 
***An example : 
import openpyxl 
import re 
import os 

wc=openpyxl.load_workbook('<path of the file>') wcsheet=wc.get_sheet_by_name('test')  
store=[] 

for data in wcsheet.columns[0]: 
    store=data 
print(store.value)***
=======================
import os, openpyxl, csv
import numpy as np

wb_source = openpyxl.load_workbook(filename, data_only=True)
app_file = open(filename,'a')
dest_file = csv.writer(app_file, delimiter=',', lineterminator='\n')


calib_sheet = wb_source.get_sheet_by_name('Calibration')

store = list(calib_sheet.iter_rows('B78:C88'))
print store

truc = np.array(store)
print truc

for i in range(11):
    for j in range(1):
        dest_file.writerow([truc[i][j].value, truc[i][j+1].value]) 

app_file.close()