weixin_41657202 2024-07-24 10:19 采纳率: 68.8%
浏览 7
已结题

python将dxf文件嵌入到Excel指定位置,Excel中能显示dxf中的图像并且双击dxf文件能打开CAD

我有一个CAD绘制的.dxf文件,我想将其嵌入到Excel中去。
想达到的效果是:在Excel中能看到dxf中在CAD绘制的图形,在Excel中双击嵌入的dxf可以打开CAD,在CAD中修改图形并保存后,结果会跟着更新到Excel中。就好像在Word中嵌入一个Excel图表一样,双击这个图表可以直接在Excel中编辑。
现在想想,好像一切都卡在Python操作dxf文件嵌入Excel的过程中了。
我试着在Excel中自行插入dxf文件,但没成功,在Excel的插入选项中有一个对象的选项,我试着新建对象类型-选择AutoCAD图形,确定后,Excel当前页会出现一个空白框,我双击后,其打开了CAD,我在CAD中进行操作后,点击保存,保存结果会更新到Excel中,Excel中还是那个空白框,但是,空白框内有我刚刚绘制的图形。
我想达到的效果与这个类似,就是嵌入.dxf文件后,也是显示一个空白框,但这个空白框中显示着dxf中绘制的图像。在嵌入操作完成后,空白框中就跟着显示dxf图像。

这是我询问人工智能给的结果,但都会报错,
报错内容如下:pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '不能插入对象。', 'xlmain11.chm', 0, -2146827284), None)
代码如下:

import win32com.client  

def insert_dxf_into_excel(excel_file, dxf_file_path):  
    xl = win32com.client.Dispatch("Excel.Application")  
    xl.Visible = True  
    wb = xl.Workbooks.Open(excel_file)  
    ws = wb.ActiveSheet  
    
    # 在指定位置插入.dxf文件  
    # ws.Shapes.AddOLEObject(Left=100, Top=100, Width=300, Height=300, FileName=dxf_file_path, Link=False)  
    shape = ws.Shapes.AddOLEObject(ClassType="AutoCAD.AcDbDocument.18", Link=False)  
    shape.OLEFormat.Object.LoadFromFile(dxf_file_path)
    
    wb.Save()  
    xl.Quit()  

# 将.dxf插入到Excel文件中  
excel_file_path = r'aaa.xlsx'
dxf_file_path = r'Drawing1.dxf'
insert_dxf_into_excel(excel_file_path, dxf_file_path)

  • 写回答

4条回答 默认 最新

  • weixin_41657202 2024-07-24 17:57
    关注

    总结一下,确实需要用到OLEObject对象,win32com可以直接用,别的如xlwings需要用.api来调用win32com的OLEObject对象。
    另外,有几个关键参数需要说明一下,ClassType可以不写,filename直接写dxf文件路径即可。
    之前算是摸到门边了,但是在ClassType这里卡住了。
    不写ClassType,应该是可以各种版本的CAD甚至是不同厂家的CAD都可以添加,在Excel中双加边框内的cad图形也会用当前安装的CAD来打开并进行编辑。
    关于ClassType的猜测仅供参考。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 创建了问题 7月24日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使