当前位置: 首页 > news >正文

app浏览器下载关键词优化公司网站

app浏览器下载,关键词优化公司网站,电子商务网站开发项目,2022年世界职业技能大赛使用 Microsoft.Office.Interop.Excel 虽然有速度慢的缺点;但是作为自带引用,兼容性最好,而且是COM对象模型也很熟悉(Excel里直接录个宏,很方便把VBA代码转成VB.NET)。所以处理几百上千条的小数据时还是很方便的。 而 Microsoft.…

使用 Microsoft.Office.Interop.Excel 虽然有速度慢的缺点;但是作为自带引用,兼容性最好,而且是COM对象模型也很熟悉(Excel里直接录个宏,很方便把VBA代码转成VB.NET)。所以处理几百上千条的小数据时还是很方便的。

Microsoft.Office.Interop.Excel 用得不多的最大问题其实就是拿简单例子可以正确释放Excel,做了大量操作后却发现在任务管理器中依然有多余Excel进程存在。

问题原因当然是COM对象映射到Interop交互对象之后,.NET下的交互对象释放次序不符合COM对象预期,导致不能正确释放。比如

Dim xlApp New Excel.Application() With {.Visible = False}
Dim xlWorkbooks As Excel.Workbooks = xlApp.Workbooks
Dim xlWorkbook As Excel.Workbook = xlWorkbooks.Open("...")Dim value As Object = xlWorkbook.Sheets(1).Cells(1,1).ValuexlWorkbook.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook)
xlWorkbook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbooks)
xlWorkbooks = Nothing
xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
xlApp = Nothing
System.GC.Collect()

中间取value这行代码看起来很正常,没有保留任何交互对象。其实在整个对象访问路径上隐式使用了以下交互对象,要靠GC来释放(通常是延后的————即调用Close()时交互对象未释放、工作簿关闭不了,之后的Quit()Excel不会退出),

xlWorkbook.Sheets 'Excel.Sheets
xlWorkbook.Sheets(1) 'Excel.Worksheet
xlWorkbook.Sheets(1).Cells 'Excel.Range
xlWorkbook.Sheets(1).Cells(1,1) 'Excel.Range

要做到正确释放,要把这些交互对象全部在Close()前释放。为了方便使用,把 Excel.ApplicationExcel.Workbook 封装在类中,用 IDisposable 接口确保释放。用类似下面的属性封装访问

    Public Property CellValue(sheetIndex As Object, rowNo As Integer, colNo As Integer) As ObjectGetDim xlSheets As Excel.Sheets = m_xlWorkbook.SheetsDim xlSheet As Excel.Worksheet = xlSheets.Item(sheetIndex)Dim xlCells As Excel.Range = xlSheet.CellsDim xlCell As Excel.Range = xlCells.Item(rowNo, colNo)Dim value As Object = xlCell.ValueSystem.Runtime.InteropServices.Marshal.ReleaseComObject(xlCell)System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells)System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)System.GC.Collect(0)Return valueEnd GetSet(value As Object)' 同理所有交互对象保留变量、释放End SetEnd Property

上面的属性是通过行号、列号访问单元value;如果需要通过A1格式访问单元又要定义属性;如果需要访问单元text也要单独定义属性。
总之全部封装好后,读写完Excel文件后就能正确释放,不再有多余Excel进程残留。

http://www.ds6.com.cn/news/82047.html

相关文章:

  • wordpress如何上传pptapp软件下载站seo教程
  • 长宁区网站建设网站制作惠州seo排名外包
  • 湘潭网站推广东莞seo排名公司
  • 网站关键词怎么布局百度排行榜风云榜
  • 专业的门户网站建设方案镇江百度关键词优化
  • 12网站免费建站网站制作工具
  • 安全员考试报名官网中国seo网站
  • 成都网站制作公司 dedecms网络营销的概念及内容
  • centos 7.2 做网站站长域名查询
  • 个人养老金怎么缴纳下载班级优化大师app
  • 濮阳微信网站建设西安网络推广公司大全
  • 59网站一起做网店广州宁波网络推广优化方案
  • mac wordpress济南seo整站优化招商电话
  • 企业展厅设计公司大型快速网站推广优化
  • 苏州网站建设系统方案网络服务公司经营范围
  • 珠海做网站那家好线上营销怎么做
  • 广西建设厅官网站代写企业软文
  • ps酒店网站模板百度客服人工服务电话
  • 运城哪家做网站的公司好如何做好推广工作
  • 企业网络安全管理最好的优化公司
  • 珠海市斗门建设局网站下载优化大师安装桌面
  • 在线做英语题的网站网站推广软文范例
  • 新版在线天堂网seo精灵
  • 建设工程施工证哪个网站查询扬州seo优化
  • 焦作网站建设哪家正规seo外链发布软件
  • 厦门网站建设公司哪个好写一篇软文1000字
  • 做二手房需要用到哪些网站搜集房源永久免费进销存管理软件手机版
  • 上海怎么做网站电脑突然多了windows优化大师
  • 中法电商网站建设2345电脑版网址导航
  • 哪个网站做初中作业网络营销课程主要讲什么内容