python पायथन में xlrd का इस्तेमाल करते हुए संख्यात्मक एक्सेल डेटा को पाठ के रूप में पढ़ना




excel csv (2)

मुझे पता है कि यह सवाल का हिस्सा नहीं है, लेकिन मैं raw_str से छुटकारा raw_str और सीधे अपने सीएसवी में raw_str । बड़ी फ़ाइल (10,000 पंक्तियाँ) के लिए यह समय के लोड को बचाएगा।

आप raw_data से छुटकारा पा सकते हैं और केवल लूप के लिए एक का उपयोग कर सकते हैं।

मैं एक्सेल फ़ाइल में एक्सएलआरडी पढ़ने की कोशिश कर रहा हूं, और मैं सोच रहा हूं कि Excel फ़ाइल में उपयोग किए जाने वाले सेल फ़ॉर्मेटिंग को अनदेखा करने का कोई तरीका है, और बस सभी डेटा को टेक्स्ट के रूप में आयात करें?

यह कोड मैं अब तक का उपयोग कर रहा हूं:

import xlrd

xls_file = 'xltest.xls'
xls_workbook = xlrd.open_workbook(xls_file)
xls_sheet = xls_workbook.sheet_by_index(0)

raw_data = [['']*xls_sheet.ncols for _ in range(xls_sheet.nrows)]
raw_str = ''
feild_delim = ','
text_delim = '"'

for rnum in range(xls_sheet.nrows):
    for cnum in range(xls_sheet.ncols):
        raw_data[rnum][cnum] = str(xls_sheet.cell(rnum,cnum).value)

for rnum in range(len(raw_data)):
    for cnum in range(len(raw_data[rnum])):
        if (cnum == len(raw_data[rnum]) - 1):
            feild_delim = '\n'
        else:
            feild_delim = ','
        raw_str += text_delim + raw_data[rnum][cnum] + text_delim + feild_delim

final_csv = open('FINAL.csv', 'w')
final_csv.write(raw_str)
final_csv.close()

यह कोड कार्यात्मक है, लेकिन कुछ फ़ील्ड हैं, जैसे ज़िप कोड, जो नंबरों के रूप में आयात किए जाते हैं, इसलिए उनके पास दशमलव शून्य प्रत्यय होता है। उदाहरण के लिए, एक्सेल फाइल में '79854' का ज़िप कोड है, इसे '79854.0' के रूप में आयात किया जाएगा।

मैंने इस xlrd युक्ति में एक समाधान खोजने का प्रयास किया है, लेकिन असफल रहा था


ऐसा इसलिए है क्योंकि Excel में पूर्णांक मानों को पायथन में फ़्लोट्स के रूप में आयात किया जाता है। इस प्रकार, sheet.cell(r,c).value एक फ्लोट देता है मानों को पूर्णांक में परिवर्तित करने की कोशिश करें, लेकिन पहले सुनिश्चित करें कि उन मानों को Excel में integers के साथ शुरू करने के लिए:

cell = sheet.cell(r,c)
cell_value = cell.value
if cell.ctype in (2,3) and int(cell_value) == cell_value:
    cell_value = int(cell_value)

यह xlrd स्पेस में है





xlrd