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