无法正确使用office interop删除excel中的行
//我试图删除一些在Excel中的行。 但是我面临的问题是它并没有删除所有的logging,删除了一些行并留下了剩余的行。
for (int i = 2; i <= lastRow; i++) { Array MyValues = (Array)MySheet.get_Range("A" + i.ToString(), "AN" + i.ToString()).Cells.Value; if (Convert.ToString(MyValues.GetValue(1, 1)) == "" && Convert.ToString(MyValues.GetValue(1, 2)) == "" && Convert.ToString(MyValues.GetValue(1, 3)) == "") { break; } else { Excel.Range cells = MySheet.get_Range("A" + i.ToString(), "AN" + i.ToString()); cells.Delete(); } }
难道你在if语句中使用break而不是continue?
另外,将循环与删除组合在一起时必须小心。 比方说你的循环删除第5行,现在第6行将成为第5行,循环将跳过它。 这可能是最新发生的事情。
我想这是因为你正在通过迭代删除。
所以你删除,例如,第一行,但随后细胞向上移动。 所以你的“我”现在是2,而你跳过了第一行。
固定:
cells = MySheet.get_Range(“Ax”,“ANx”);
“x”是您想要从中删除行的地方
通过向后循环解决我的问题。
ie for(i=lastrow;i>=2;i--) { //delete }
- Excel另存为对话框不能正确显示
- 将网格导出为excel后文件无法打开
- 将string转换为date从一个Excel文件的asp.net mvc
- 如何从Windows Azure云服务中的Excel文件中读取数据?
- 在ASP.NET的64位Windows平台上将Excel文件导入SQL Server的最佳方法是什么?
- 无法理解代码以从HTML导出Excel电子表格
- 我如何写一个Excel中使用Microsoft.Office.Interop.Excel.Application在C#中
- 为什么我的Excel办公室对象留下了EXCEL.exe进程?
- 使用ASP.Net SSRS ReportViewer进行渲染后,在Excel中更改行高