首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

使用Excel.Application 导出Excel的有关问题

2012-02-11 
使用Excel.Application导出Excel的问题代码如下,问题是我第次次导出,同一应用程序但不同的界面,导出的数据

使用Excel.Application 导出Excel的问题
代码如下,问题是我第次次导出,同一应用程序但不同的界面,导出的数据会覆盖上一次导出的Excel表。我保存的文件是不同的。
就是说我两次导出,保存为不同的文件,但前一次的数据被覆盖为后一次的数据。
我用Excel打开文件再导出,看到错误信息是不能使用sheel1.xlsx. 是不是我的Application 还没有退出?要怎么样才能退出呢

C# code
string filePath = "";            if (saveFileDialog1.ShowDialog() != DialogResult.OK)            {                return;                            }            filePath = saveFileDialog1.FileName;            Microsoft.Office.Interop.Excel.Application app =                 new Microsoft.Office.Interop.Excel.ApplicationClass();            try            {                app.Visible = false;                Workbook wBook = app.Workbooks.Add(true);                Worksheet wSheet = wBook.Worksheets[1] as Worksheet;                if (inventList.Count>0)                {                    int row = 0;                    row = inventList.Count;                                        for (int i = 0; i < row; i++)                    {                        wSheet.Cells[i+2, 1] = inventList[i].PartNo;                                           }                                        wSheet.Cells[1, 1] = "产品编号";                                   }                //设置禁止弹出保存和覆盖的询问提示框                   app.DisplayAlerts = false;                app.AlertBeforeOverwriting = false;                //app.Workbooks[1].Close(true, filePath, null);                app.Workbooks[1].Save();                app.Save(filePath);                app.SaveWorkspace(filePath);                         app.Quit();                app = null;                                               MessageBox.Show("数据导出成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);            }            catch (Exception ex)            {                MessageBox.Show("导出数据时出现错误!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);            }


[解决办法]
我做过vb导出数据。我关闭的时候把Workbook和Worksheet也关闭了。
不知道这个对你有没有什么影响。。。。
[解决办法]
wBook.close()不知道java是不是也有
[解决办法]
还有我在vb里打开excel的时候都是将路径传进去的
Set gsXlApp = CreateObject("Excel.Application")
gsXlApp.DisplayAlerts = False
Set gsXlBook = gsXlApp.Workbooks.Open(filePath, UpdateLinks:=0)
Set gsXlSheet = gsXlBook.Sheets(1)

保存的时候也是直接用wBook.save来保存
感觉数据被覆盖的问题就是book和sheet没有关闭,导致重用,结果第二次就录入时第一次的数据从新被录入。
只是个人意见,不知道对不对。

If Not (gsXlSheet Is Nothing) Then
Set gsXlSheet = Nothing
End If

If Not (gsXlBook Is Nothing) Then
gsXlBook.Close
Set gsXlBook = Nothing
End If

If Not (gsXlApp Is Nothing) Then
gsXlApp.Application.IgnoreRemoteRequests = False
gsXlApp.Quit
Set gsXlApp = Nothing
End If
这是我vb关闭用的,上面是我声明用的。
[解决办法]
再看看是不是数据问题,两回的数据本身都是一样的。。。

热点排行