使用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关闭用的,上面是我声明用的。
[解决办法]
再看看是不是数据问题,两回的数据本身都是一样的。。。