重复导出Excel出问题

sullivanecidi 2017-08-09 09:26:16
我需要导入一个Excel,然后将处理完的数据追加在这个Excel后面,导出,没有任何问题;但是当我第二次导出的时候,就会报错,HRESULT:0x800A03EC。是不是第一次导出以后,需要释放什么?
请大侠们指导~
...全文
353 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
注意不是随便去关闭当前内存中所有 Excel 进程。而是要准确地去结束你需要关闭的那个 Excel 进程。
  • 打赏
  • 举报
回复
封装你的 Excel Application 对象,结束之前之前可以这样 Dispose
[DllImport("User32.dll")]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int ProcessId);

public static void KillExcelApp(this excel.Application app)
{
    app.Quit();
    IntPtr intptr = new IntPtr(app.Hwnd);
    int id;
    GetWindowThreadProcessId(intptr, out id);
    var p = Process.GetProcessById(id);
    //if (p != null)
    p.Kill();
}
YT19872 2017-08-18
  • 打赏
  • 举报
回复
把进程关了。
luzhipeng81 2017-08-18
  • 打赏
  • 举报
回复
每次excel运行完成之后关闭一下或者下次启动excel之前用process.kill结束一下内存里的进程
浪子-无悔 2017-08-09
  • 打赏
  • 举报
回复
你这样问的话,估计没人知道你问题出在哪里呢。。。而且EXCEL操作,网上成熟的代码已经非常多了 比如基本的COM+.apose,NPOI。。。。
exception92 2017-08-09
  • 打赏
  • 举报
回复
是不是第一次导出以后,需要释放什么? -》有可能,贴点导出代码出来看看
sullivanecidi 2017-08-09
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
是不是第一次导出以后,需要释放什么? -》有可能,贴点导出代码出来看看
以下是导入代码: Dim dialog As New OpenFileDialog() dialog.Filter = "Excel file (*.xls;*.xlsx)|*.xls;*.xlsx" dialog.ShowDialog() If dialog.FileName = "" Then MsgBox("没有导入数据表") 'MyExcelinput = Nothing MyExcelinput.Quit() Else Dim inputbook As Excel.Workbook Dim inputsheet1, inputsheet2, inputsheet3, inputsheet4, inputsheet5, inputsheet6, inputsheet7 As New Excel.Worksheet Dim datanumber1, datanumber2, datanumber3, datanumber4, datanumber5, datanumber6 As Integer inputbook = MyExcelinput.Workbooks.Open(dialog.FileName) inputsheet1 = inputbook.Sheets(1) inputsheet2 = inputbook.Sheets(2) inputsheet3 = inputbook.Sheets(3) inputsheet4 = inputbook.Sheets(4) inputsheet5 = inputbook.Sheets(5) inputsheet6 = inputbook.Sheets(6) inputsheet7 = inputbook.Sheets(7) 其中MyExcelinput是Pubic Shared变量 以下是导出代码: Dim inputsheet1, inputsheet2, inputsheet3, inputsheet4, inputsheet5, inputsheet6, inputsheet7 As New Excel.Worksheet inputsheet1 = MyExcelinput.Worksheets(1) inputsheet2 = MyExcelinput.Worksheets(2) inputsheet3 = MyExcelinput.Worksheets(3) inputsheet4 = MyExcelinput.Worksheets(4) inputsheet5 = MyExcelinput.Worksheets(5) inputsheet6 = MyExcelinput.Worksheets(6) inputsheet7 = MyExcelinput.Worksheets(7) 就是把导入的Excel每个工作表赋值给一个sheet变量,然后对inputsheet进行操作,最后 MyExcelinput.Visible = True MyExcelinput.WindowState = Excel.XlWindowState.xlMaximized 以上就是导入和导出的代码 还有,我每次运行都会在后台留下很多Excel32,应该在哪里对Excel进行释放?

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧