Python循环excel表打印单元格值

时间:2017-11-28 16:34:05

标签: python excel

我正在尝试遍历一个打印每列中值的Excel工作表。然后转到下一行,打印列的值,直到文件末尾。

我的数据看起来像

Name           email                desc           date
name1          email1               desc1          date1
name2          email2               desc2          date2
name3          email3               desc3          date3



wb = load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
row_count = sheet.max_row -1
column_count = sheet.max_column
i = 1
while (i <= row_count):
 for item in sheet.iter_cols():
    #for row in sheet.iter_cols():
    first_value = item[i]
    print (first_value.value)
    i+=1

我得到错误或元组索引超出范围,并且它也没有打印正确的数据。

 first_value = item[i]
 IndexError: tuple index out of range

上面的代码在超出范围错误之前我得到了 name1,email2,desc3作为输出显然是错误的,因为数据不在同一行

2 个答案:

答案 0 :(得分:1)

您正在打印name1email2desc3等值的事实表明您正在增加列和行。这是因为你增加了嵌套for循环中的i而不是外层循环中的while (i <= row_count): for item in sheet.iter_cols(): #for row in sheet.iter_cols(): first_value = item[i] print (first_value.value) i+=1

尝试在while循环中增加它。例如,像这样:

<?php
$basename = basename($_SERVER['PHP_SERVER']); // Get the basename
$basename = strtolower($basename); // Convert to lowercase
$basename = str_replace('.php', '', $basename); // Replace ".php" with ""
//Your database as PHP array for demo purpose
$menu = array(
    array('id_menu' => 1, 'name' => 'index', 'text' => 'Home'),
    array('id_menu' => 2, 'name' => 'concept', 'text' => 'Concept'),
    array('id_menu' => 3, 'name' => 'gallery', 'text' => 'Gallery')
);

for($i = 0; $i < count($menu); $i++) {
    $m = $menu[$i];
    $class = $basename === $m['name'] ? 'active' : '';
    echo "<a href=\"$m[name].htm\" class=\"$class\">$m[text]</a>";
}

答案 1 :(得分:1)

解决此问题的最简单方法是将文件另存为.csv

然后运行:

import csv
with open(<YOUR_CSV_FILE_NAME>) as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)

从这里你可以玩#34;行&#34;根据需要变量