我正在尝试遍历一个打印每列中值的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作为输出显然是错误的,因为数据不在同一行
答案 0 :(得分:1)
您正在打印name1
,email2
,desc3
等值的事实表明您正在增加列和行。这是因为你增加了嵌套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;根据需要变量