if (dr.HasRows == false || excelData == "")
{ //excelRow = excelRow - 1; Microsoft.Office.Interop.Excel.Application app1 = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook openWorkbook1 = app1.Application.Workbooks.Add("" + RDfilename + ""); app1.Visible = false; Worksheet ws1 = (Microsoft.Office.Interop.Excel.Worksheet)openWorkbook1.Worksheets[1];
Range range = (Range)ws1.Rows[excelRow + 1, Type.Missing]; range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp); openWorkbook1.SaveAs(TemRDfilename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app1.Quit(); //结束excel进程
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses())
{
if (thisproc.ProcessName.ToString() == "EXCEL")
{
thisproc.Kill();
}
}
myConnExcel.Close(); System.IO.File.Delete(RDfilename);
File.Copy(TemRDfilename, RDfilename, false);
System.IO.File.Delete(TemRDfilename); excelRow = excelRow - 1;
myExcelCount = myExcelCount - 1;
errexcelRow = errexcelRow + 1;
}
else
{
//excelRow = excelRow - 1; Microsoft.Office.Interop.Excel.Application app2 = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook openWorkbook2 = app2.Application.Workbooks.Add("" + ERRfilename + ""); app2.Visible = false; Worksheet ws2 = (Microsoft.Office.Interop.Excel.Worksheet)openWorkbook2.Worksheets[1];
Range range = (Range)ws2.Rows[errexcelRow + 1, Type.Missing];
range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp); openWorkbook2.SaveAs(TemERRfilename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app2.Quit(); //结束excel进程
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses())
{
if (thisproc.ProcessName.ToString() == "EXCEL")
{
thisproc.Kill();
}
} myConnExcel.Close(); System.IO.File.Delete(ERRfilename);
File.Copy(TemERRfilename, ERRfilename, false);
System.IO.File.Delete(TemERRfilename);
} }
{ //excelRow = excelRow - 1; Microsoft.Office.Interop.Excel.Application app1 = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook openWorkbook1 = app1.Application.Workbooks.Add("" + RDfilename + ""); app1.Visible = false; Worksheet ws1 = (Microsoft.Office.Interop.Excel.Worksheet)openWorkbook1.Worksheets[1];
Range range = (Range)ws1.Rows[excelRow + 1, Type.Missing]; range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp); openWorkbook1.SaveAs(TemRDfilename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app1.Quit(); //结束excel进程
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses())
{
if (thisproc.ProcessName.ToString() == "EXCEL")
{
thisproc.Kill();
}
}
myConnExcel.Close(); System.IO.File.Delete(RDfilename);
File.Copy(TemRDfilename, RDfilename, false);
System.IO.File.Delete(TemRDfilename); excelRow = excelRow - 1;
myExcelCount = myExcelCount - 1;
errexcelRow = errexcelRow + 1;
}
else
{
//excelRow = excelRow - 1; Microsoft.Office.Interop.Excel.Application app2 = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook openWorkbook2 = app2.Application.Workbooks.Add("" + ERRfilename + ""); app2.Visible = false; Worksheet ws2 = (Microsoft.Office.Interop.Excel.Worksheet)openWorkbook2.Worksheets[1];
Range range = (Range)ws2.Rows[errexcelRow + 1, Type.Missing];
range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp); openWorkbook2.SaveAs(TemERRfilename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app2.Quit(); //结束excel进程
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcesses())
{
if (thisproc.ProcessName.ToString() == "EXCEL")
{
thisproc.Kill();
}
} myConnExcel.Close(); System.IO.File.Delete(ERRfilename);
File.Copy(TemERRfilename, ERRfilename, false);
System.IO.File.Delete(TemERRfilename);
} }
解决方案 »
- C#操作office出错
- C#中以下代码运行不显示行号,帮忙诊诊,谢谢
- sms.dll文件
- 下拉列表 验证
- 一个账号登录多个WEB项目该怎么实现?
- 谁知道vs.net2003从哪下栽?正确立即给分
- datetimepicker控件如何赋一个空值?就是初始的时候不显示任何日期的内容
- windows 的网络编程应从哪里起步!!
- 怎样使datagrid中的一行,出现在屏幕上???
- c# webbrowers给textarea填表,如果直接写在webbrowers是成功的。同样代码在button中就失败了。求怎样在button中不失败。
- Socket / Java实现服务端 / C#实现客户端,客户端无法发送字符流信息。。。
- 新手求解答
出现这个问题,一般就是两种情况,一种是当前文件正被进程占用,还有就是操作权限不够,按照你得描述看,应该是第一种情况,你看一下代码里面是不是有进程冲突的地方
提示文件正由另一进程使用,因此该进程无法访问该文件。
[
Thread.Sleep(1000);
System.IO.File.Delete(ERRfilename); File.Copy(TemERRfilename, ERRfilename, false); System.IO.File.Delete(TemERRfilename);
大概是这里。copy后没有释放出来,接着就删除文件,报错。
File.Copy(TemERRfilename, ERRfilename,false); System.IO.File.Delete(TemERRfilename);
应该是这里报错。copy后没有释放出来,接着就删除文件,报错。
你先看看是不是上面的原因
System.IO.File.Delete(RDfilename);
Thread.Sleep(500);
File.Copy(TemRDfilename,RDfilename,false);
System.IO.File.Delete(TemRDfilename);
Thread.Sleep(500);
//File.Copy文件被复制完后会自动释放