我需要在数百个excel的单元格中找到值。 到目前为止,我通过迭代每一行来解析每个excel文件,但它太长了(超过文件超过3000行)。 但是当在excel中使用ctrl + f时,结果是实时的。
我的问题:如何在包含多行的excel文件中快速找到(比迭代更快)一个值。
感谢您的帮助。
答案 0 :(得分:1)
这样做的方法是使用com自动化。
安装pythonnet以访问公共语言运行库(CLR)。在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet处有预先构建的二进制文件。
https://github.com/pythonnet/pythonnet
我没有excel所以我无法为您提供功能示例,但您的代码最终会像示例中的示例:https://discourse.mcneel.com/t/close-an-excel-session-with-python/613。
答案 1 :(得分:0)
根据Nurzhan的评论,这里是答案(在矩阵中复制excel文件,然后在3个条件下找到矩阵中的值):
List<Observable<?>> observableList = new ArrayList<>();
observableList.add(
getUsers()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.flatMap(Observable::from)
.doOnNext(user->insertUser(user))
.toList()
);
observableList.add(
getLocations()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.flatMap(Observable::from)
.doOnNext(location->insertLocation(location))
.toList()
);
Observable.zip(observableList, new FuncN<Object>() {
@Override
public Observable<?> call(Object...args) {
return Observable.empty();
}).subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
updateUserCache();
updateLocationCache();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
});
通过在excel中迭代3000行,它大约是25秒,现在通过在矩阵中处理数据,结果不到一秒钟。