标签: xlwings

使用XLWINGS打开工作簿而不显示它

我开始使用XLWings(根本不是我喜欢Excel,但这是我必须做的事情).问题是我找不到让Python打开工作簿而不显示它的方法.

看起来旧XLWings 0.6.4中Workbooks的构造函数是xlwings.Workbook,其中一个参数是一个标记'app_visible'(参见http://docs.xlwings.org/en/v0.6.4/api.html).

但是,在新的v0.9.2工作簿中已被Book取代,而Book没有任何此类标志(http://docs.xlwings.org/en/stable/api.html).App对象确实拥有它,我认为这是要走的路.所以我编码:

import xlwings as xw

app = xw.App(visible=False)
filename = os.path.join(PATH_EXCEL_SAMPLES, r"rangosConDatos_sample01.xls")
book = xw.Book(filename)
# Do stuff with the info in the book
book.close()  # Ya puedo cerrar el libro.
app.kill()
Run Code Online (Sandbox Code Playgroud)

但是,令人遗憾的是,什么时候

book = xw.Book(filename)
Run Code Online (Sandbox Code Playgroud)

执行app的'visible'属性突然变为True,并显示该书.我不知道这是一个期望的功能还是一个意外的行为.无论如何,任何想法我应该怎么做?

python excel visibility xlwings

19
推荐指数
2
解决办法
7046
查看次数

使用xlwings和python复制工作表的解决方案

我一直在python中使用xlwings,并且正在努力找到复制工作表(例如模板)的正确代码.在几个地方四处寻找并阅读pywin32文档后,我找到了一个复制工作表的解决方案.我想在这里发布它,以帮助其他人搜索相同的问题,以节省他们一些时间.这适用于xlwings版本0.11.4.

__PRE__

这一切都有效,因为xlwings是pywin32的包装器,而.api调用允许访问那些在xlwings中未记录的pywin32函数.另请注意,'After'命令在工作表中不起作用,它将打开一个复制了工作表的新工作簿.这不应该造成太大的问题,因为我认为如果需要可以重新排序索引.谢谢.

python excel xlwings

15
推荐指数
1
解决办法
3489
查看次数

xlwings 与 openpyxl 阅读 Excel 工作簿之间的差异

我大多只使用 xlwings 打开 ( read-write) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。

我注意到 xlwings 和 openpyxl 读取工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32阅读工作簿。当您阅读工作簿时xlwings.Book(<filename>),实际工作簿会打开。我有一种感觉,这是一个结果pywin32

但是,使用openpyxl.load_workbook(<filename>)工作簿时不会出现窗口。我有一种感觉,这是不使用pywin32.

除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwingspywin32阅读工作簿是否有好处/成本,而openpyxl不是似乎没有使用pywin32

python excel openpyxl xlwings

15
推荐指数
1
解决办法
7944
查看次数

有没有办法用xlwings调用python而不重新打开Excel文件?

我使用xlwings从Excel调用python.我发现在运行我的宏时,Excel会关闭并重新打开以运行代码.它运行正常,但它减慢了速度.此外,如果未保存Excel文件,则会出现一个对话框,提示该文件已经打开,并且我将丢失未保存的更改.

有没有办法调用python而不重新打开Excel文件?

这是我的python代码(在loaddf.py中):

from xlwings import Workbook, Range, Sheet

def my_macro():
    wb = Workbook.caller()
    Range('A1').value = Range('A1').value + 1
Run Code Online (Sandbox Code Playgroud)

以及我的Excel文件中的VBA代码:

Sub loaddfsub()
    RunPython ("import loaddf; loaddf.my_macro()")
End Sub
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

python xlwings

8
推荐指数
1
解决办法
2374
查看次数

如何使用 xlwings 调整宽度列

我编写了一个函数,用xlwings将数据保存在 WorkBook 中,我想适应宽度列

class VehicleClass:
    def __init__(self, VehClass):
        # Vehicles 4 - Vehicle Classes
        self.VehClass = [VehClass]
        self.VehName = []
        self.ScaleFactor = []

    def add(self, VehName, ScaleFactor):
        self.VehClass*=1
        self.VehName.append(VehName)
        self.ScaleFactor.append(ScaleFactor)        

    def save(self):
        # Vehicles 4 - Vehicle Classes
        sht = wb.sheets['Vehicles 4 - Vehicle Classes']
        rng = sht.range("A1").end('down').offset(1, 0)

        for i, item in enumerate([self.VehClass, self.VehName, self.ScaleFactor]):
            rng.offset(0, i).options(transpose=True).value = item
            rng.autofit() # or rng.columns.autofit()
Run Code Online (Sandbox Code Playgroud)

但不起作用。

你有什么主意吗 ?谢谢 !

python excel python-3.x xlwings

8
推荐指数
2
解决办法
8666
查看次数

如何使用xlwings保存工作簿?

我有一个excel工作表,一些按钮和一些宏.我使用xlwings使它工作.有没有办法通过xlwings保存工作簿?我想在执行操作后提取特定的工作表,但保存的工作表是在没有生成数据的操作之前提取的工作表.

我提取所需表单的代码如下:

Set objFSO = CreateObject("Scripting.FileSystemObject")

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
sheet_name = Wscript.Arguments.Item(1)
dir_name = Wscript.Arguments.Item(2)
file_name = Wscript.Arguments.Item(3)

Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False

Dim objWorkbook
Set objWorkbook = objExcel.Workbooks(src_file)

objWorkbook.Sheets(sheet_name).Copy
objExcel.DisplayAlerts = False

objExcel.ActiveWorkbook.SaveAs dir_name + file_name + ".xlsx", 51
objExcel.ActiveWorkbook.SaveAs dir_name + file_name + ".csv", 6

objWorkbook.Close False
objExcel.Quit
Run Code Online (Sandbox Code Playgroud)

python excel vba xlwings

7
推荐指数
1
解决办法
5519
查看次数

如何使用xlwings从Python调用Excel宏?

我已经阅读了xlwings 的API文档,并在解释器中使用了Workbook和Sheet对象,但我无法弄清楚如何从Python调用宏.

如何使用xlwings从Python调用Excel宏?

python excel vba excel-vba xlwings

7
推荐指数
2
解决办法
9893
查看次数

执行xlwings函数后,我无法关闭Excel 2016

当我执行一个Xlwings函数时,我可以保存并关闭工作簿.但我不能再关闭Excel 2016了.这是一个已知的问题?我怎样才能解决这个问题?

excel xlwings

7
推荐指数
1
解决办法
4251
查看次数

将Excel列中的数据读入Python列表

我使用python xlwings在Excel 2013中读取一列数据.列A中填充了数字.要将此列导入python列表py_list,我有以下代码;

import xlwings as xw

wb = xw.Book('BookName.xlsm')
sht = xw.Book('SheetName')
py_list = sht.range('A2:A40').value
Run Code Online (Sandbox Code Playgroud)

如果列数据填充在上面,则上述代码有效A2:A40.但是,列数据可以继续增长.数据可以增长并延伸到A2:A46A2:A80.最后一行是空的.在编译时不知道此列中有多少行数据.

如何修改代码以检测最后一行的空单元格,以便可以读取数据范围py_list

我愿意使用其他python库来读取除xlwings之外的Excel数据.我使用的是python v3.6

python excel xlwings

7
推荐指数
2
解决办法
2万
查看次数

xlwings:保存并关闭

我试图找出如何在写入后使用 xlwings 保存并关闭现有工作簿:

import xlwings as xw

list_of_values = [1, 2, 3]
workbook_path = 'abc.xlsx'
wb = xw.Book(workbook_path)
ws = wb.sheets['sheet1']
ws.range('E35').value = list_of_values
wb.save()
wb.close()
Run Code Online (Sandbox Code Playgroud)

当我到达 时wb.save(workbook_path),出现提示:“此位置已存在名为 abc.xlsx 的文件”。你想更换它吗?

我想立即覆盖该文件而不出现提示。根据文档,wb.save()应该自动覆盖(参见: https: //docs.xlwings.org/en/v0.6.4/api.html)。我也试过了wb.save(workbook_path),但是还是出现弹窗。

感谢对此的任何帮助。

ps - 我基本上试图将数据写入预先格式化的 Excel 工作表中。如果有其他方法可以保留格式,我很乐意尝试。我已经尝试过这个,但它抛出一个错误if newCellEasy write formatted Excel from Python: Start with Excel formatted, use it in Python, and regenerate Excel from Python

python excel xlwings

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

xlwings ×10

excel ×9

python ×9

vba ×2

excel-vba ×1

openpyxl ×1

python-3.x ×1

visibility ×1