Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C语言删除excel中的空行#_C#_Excel_Null_Delete Row - Fatal编程技术网

C# 使用C语言删除excel中的空行#

C# 使用C语言删除excel中的空行#,c#,excel,null,delete-row,C#,Excel,Null,Delete Row,我想在程序执行结束时删除空行。在详细介绍中,我在预定义的excel表格中使用C#插入了一些计算后的结果。最后,我需要通过编程删除/删除空行。有人能提出解决办法吗。我的代码有点大,所以我无法包含在这里。为了您的理解,我提供了一些excel的输入和输出视图。在下面的Excel输出中,D和E行有空行,我想通过编程删除,但不提及范围 输入Excel/预定义的Excel文件 A 1 2 3 4 B C D E 输出Excel A 1 2 3 4 B ABc cde n

我想在程序执行结束时删除空行。在详细介绍中,我在预定义的excel表格中使用C#插入了一些计算后的结果。最后,我需要通过编程删除/删除空行。有人能提出解决办法吗。我的代码有点大,所以我无法包含在这里。为了您的理解,我提供了一些excel的输入和输出视图。在下面的Excel输出中,DE行有空行,我想通过编程删除,但不提及范围

输入Excel/预定义的Excel文件

A   1   2   3   4
B
C
D
E
输出Excel

A   1   2   3   4
B   ABc cde nAC 123
C   cdf fed x2  123
D
E

可以使用范围对象执行此操作。这里我假设您使用的是Excel互操作

假设你打开了你的书,然后设置范围,然后删除它。它应该是这样的

ApplicationClass excel = new ApplicationClass();
//...

Microsoft.Office.Interop.Excel.Range cel = (Range)excel.Cells[rowIndex, columnIndex];
cel.Delete();
您也可以尝试使用:

for(int i = 1; i <=20; i++)
{
   excelRange = (Excel.Range)excelWorkSheet.Cells[i, 1];
   if (!string.IsNullOrEmpty(excelRange.Text.ToString()))
   {
       ((Range)excelWorkSheet.Rows[i]).Delete(excelRange);
   }
}

for(int i=1;i以下代码工作正常,为指定的行号和列号创建一个新的空行:

Excel.Range rng = (Excel.Range)xlWorkSheet1.Cells[RowNumber, ColumnNumber];
                            Excel.Range Row1 = rng.EntireRow;
                            Row1.Insert(Excel.XlInsertShiftDirection.xlShiftDown, false);

可以使用以下代码删除Excel文件中的空行

 xlApp = new Microsoft.Office.Interop.Excel.Application();
 Microsoft.Office.Interop.Excel.Workbook excelWorkbook = xlApp.Workbooks.Open(fileName);
 Microsoft.Office.Interop.Excel._Worksheet sheet = excelWorkbook.Sheets[1];
 var LastRow = sheet.UsedRange.Rows.Count;
 LastRow = LastRow + sheet.UsedRange.Row - 1;
 for (int i = 1; i <= LastRow; i++)
 {
   if (application.WorksheetFunction.CountA(sheet.Rows[i]) == 0)
       (sheet.Rows[i] as Microsoft.Office.Interop.Excel.Range).Delete();
 }
xlApp=new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelWorkbook=xlApp.Workbooks.Open(文件名);
Microsoft.Office.Interop.Excel.\u工作表sheet=excelWorkbook.Sheets[1];
var LastRow=sheet.UsedRange.Rows.Count;
LastRow=LastRow+sheet.UsedRange.Row-1;

对于(int i=1;i扩展方法,从Excel工作表中删除空行和空列

/// <summary>
/// Deletes empty rows and columns from the end of the given worksheet
/// </summary>
public static void Trim(this Excel.Worksheet worksheet)
{
    worksheet.TrimColumns();
    worksheet.TrimRows();
}

/// <summary>
/// Deletes empty rows from the end of the given worksheet
/// </summary>
public static void TrimRows(this Excel.Worksheet worksheet)
{
    Excel.Range range = worksheet.UsedRange;
    while(worksheet.Application.WorksheetFunction.CountA(range.Rows[range.Rows.Count]) == 0)
        (range.Rows[range.Rows.Count] as Excel.Range).Delete();
}

/// <summary>
/// Deletes empty columns from the end of the given worksheet
/// </summary>
public static void TrimColumns(this Excel.Worksheet worksheet)
{
    Excel.Range range = worksheet.UsedRange;
    while(worksheet.Application.WorksheetFunction.CountA(range.Columns[range.Columns.Count]) == 0)
        (range.Columns[range.Columns.Count] as Excel.Range).Delete();
}
//
///从给定工作表的末尾删除空行和空列
/// 
公共静态空白修剪(此Excel.工作表)
{
worksheet.trimpolumns();
工作表.TrimRows();
}
/// 
///从给定工作表的末尾删除空行
/// 
公共静态行(此Excel.工作表)
{
Excel.Range=worksheet.UsedRange;
while(worksheet.Application.WorksheetFunction.CountA(range.Rows[range.Rows.Count])==0)
(range.Rows[range.Rows.Count]作为Excel.range).Delete();
}
/// 
///从给定工作表的末尾删除空列
/// 
公共静态列(此Excel.工作表)
{
Excel.Range=worksheet.UsedRange;
while(worksheet.Application.WorksheetFunction.CountA(range.Columns[range.Columns.Count])==0)
(range.Columns[range.Columns.Count]作为Excel.range).Delete();
}

您甚至没有提到创建excel文件所使用的库。我只是将数据插入到预定义的excel模板中,还使用Microsoft.Office.Interop.excel引用导入excel。请看这里:您能知道运行时输入的行数吗?我不知道行数,只需要在程序中找到空行即可在包含(范围)excel.Cells[rowIndex,columnIndex]时,我遇到了一个错误,您能帮我解决这个问题吗。在第二个解决方案中,我需要找到null值或somestring。您是否试图将somestring称为null?我尝试了社交msdn,但当我在下面几行尝试时,我遇到了这个错误如果(application.WorksheetFunction.CountA(exlwooksheet.Rows[i])==0)(exlwooksheet.Rows[i]为Microsoft.Office.Interop.Excel.Range)。Delete();VikrantMore您可以查看并帮助我解决此问题吗?