Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:内存溢出异常

1楼
超古伯 发表于:2023/11/7 1:13:00
图片点击可在新窗口打开查看
excel报表插入很多图片,提示内存溢出异常
如果在循环插入图片的代码里面写img.dispose,会导致最后Book.save的时候报错“参数无效”
最终img.dispose写了在代码的最后面,也写了gc.collect,但是多次运行后会提示内存溢出异常
请问下跟图片相关的及时释放内存的代码该怎么写,放在什么位置,谢谢
2楼
有点蓝 发表于:2023/11/7 8:33:00
请贴出具体代码说明问题
3楼
超古伯 发表于:2023/11/7 19:46:00
 
    Dim Sheet2 As XLS.Sheet = Book.Sheets(0)

    Dim img As Image
    For pg As Integer = 0 To vars("pg") - 1
        
        img = getImage(qzs(rand.Next(0, qzs.Count)))
        Dim cz As Integer = Rand.Next (1, 4)
        Select Case cz
            Case 1
                img.RotateFlip(RotateFlipType.Rotate90FlipNone)
            Case 2
                img.rotateflip(RotateFlipType.Rotate180FlipNone)
            Case 3
                img.rotateflip(RotateFlipType.Rotate270FlipNone)
        End Select
        Sheet2(pg * 21 + 13, 13).Value = New XLS.Picture(img, 0, 0, 100, img.Height / img.Width * 100)
        
    Next
    
    Book.Save(fl)
     img.Dispose
    gc.Collect
4楼
有点蓝 发表于:2023/11/7 20:17:00
试试
Dim Sheet2 As XLS.Sheet = Book.Sheets(0)
    For pg As Integer = 0 To vars("pg") - 1
        Dim img As Image= getImage(qzs(rand.Next(0, qzs.Count)))
        Dim cz As Integer = Rand.Next (1, 4)
        Select Case cz
            Case 1
                img.RotateFlip(RotateFlipType.Rotate90FlipNone)
            Case 2
                img.rotateflip(RotateFlipType.Rotate180FlipNone)
            Case 3
                img.rotateflip(RotateFlipType.Rotate270FlipNone)
        End Select
        Sheet2(pg * 21 + 13, 13).Value = New XLS.Picture(img, 0, 0, 100, img.Height / img.Width * 100)
         img.Dispose
         gc.Collect
    Next
    
    Book.Save(fl)
    gc.Collect
5楼
超古伯 发表于:2023/11/7 20:37:00
图片点击可在新窗口打开查看
这个方法我也测试过了,在Book.Save之前注释掉任何操作,只要出现img.Dispose这一句就保存不了,就会提示参数无效
6楼
超古伯 发表于:2023/11/7 20:41:00
循环那里加img.Dispose的情况,我是在Book.Save上一行加的msgbox,可以运行到这个弹窗,也没有报内存溢出了,但是就是不能保存,也测试了Book是还存在的,可以输出Book第一个表的名称
7楼
有点蓝 发表于:2023/11/7 20:49:00
换种方式,使用vba添加图片:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=147456&replyID=61001&skin=1
8楼
超古伯 发表于:2023/11/7 20:55:00
vba的方法也有问题,添加的图片多了,图片的位置越来越偏,刚开始时图片跟插入图片的那行顶对齐的,越到后面图片越往上偏,用的是一样的代码,只是循环插入
9楼
有点蓝 发表于:2023/11/7 21:03:00
代码发上来看看
10楼
超古伯 发表于:2023/11/7 21:05:00
另外New XLS.Book这个也有个问题,细节区引用了图片,Book.Build()后保存,再New XLS.Book这个保存的文件,保存打开就会出现很多原先细节区生成的图片都丢失了
共14 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.