有没有一种方法可以加快从.xlsm文件读取pd.read_excel()的速度?

时间:2020-09-16 13:58:36

标签: python excel pandas

对于某些背景,我有一本Excel宏启用的工作簿(xlsm),用于将一些用户输入的变量传递给Python。

在我的脚本中使用xlsx文件中的Pandas和pd.read_excel()很快,即使数据集很大。但是我注意到从xlsm文件读取甚至一行都需要很长时间。

即使通过将数据限制在一个较小的区域来读取一行,就像这样:

pd.read_excel('Automation.xlsm', skiprows=6, nrows=2, usecols='B:C')

与xlsx的0.03秒相比,它仍然可能需要20秒。

有什么方法可以提高读取xlsm文件的速度吗?

2 个答案:

答案 0 :(得分:0)

尝试一次读取它:

<?php
require_once "pdo.php";
session_start();

if(isset($_POST['delete']) && isset($_POST['user_id'])){
    $sql="DELETE FROM users WHERE user_id= :zip";
    $stmt= $pdo->prepare($sql);
    $stmt->execute(array(':zip' =>$_POST['user_id']));
    $_SESSION['success']='Record Deleted';
    header('Location: index.php');
    return;}
    

$stmt=$pdo->prepare("SELECT name, user_id from users where user_id= :xyz");
$stmt->execute(array(":xyz"=>$_GET['user_id']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row===false){
    $_SESSION['error']="bad value for user id";
    header('Location: index.php');
    return;}
?>
<p>Confirm Deleting <?=htmlentities($row['name'])?></p>
<form method="post">
<input type="hidden" name="user_id" value="<?$row['user_id']?>">
<input type="submit" value="delete" name="delete">
<a href="index.php">Cancel</a>
</form>

根据您的数据库大小更改块大小

答案 1 :(得分:0)

我已经解决了这个问题。对于任何有此问题的人,修复都是非常基本的。

我在xlsm文件中选择了数据集之外的所有行和列,然后右键单击->删除。必须在很远的地方有一个空单元格,即使在pd.read_excel()中指定忽略它,它仍会增加读取时间。