C# 合并Excel工作簿中所有工作表的UsedRange

C# 合并Excel工作簿中所有工作表的UsedRange,c#,excel,windows-applications,C#,Excel,Windows Applications,我希望遍历Excel工作簿中的所有工作表,并将合并的内容放入单个Excel.Range中 xlApp.Workbooks.OpenText(fDialog.FileName, DataType: Excel.XlTextParsingType.xlDelimited, TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone, ConsecutiveDelimiter: true, Comma: true); xlSheets = xlA

我希望遍历Excel工作簿中的所有工作表,并将合并的内容放入单个Excel.Range中

xlApp.Workbooks.OpenText(fDialog.FileName, DataType: Excel.XlTextParsingType.xlDelimited, TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone, ConsecutiveDelimiter: true, Comma: true);

xlSheets = xlApp.Workbooks[1].Worksheets;

foreach (Excel.Worksheet sheet in xlSheets)
{        
    range += sheet.UsedRange;  //How do I concatenate these UsedRanges so range = the total of all the Worksheets?                        
}
我知道+=不起作用,我只是把它包括进来,以表示我希望实现的连接


感谢

range1=xlApp.Union(range1,range2)
感谢Tim,我能够创建一些逻辑,似乎在每个Union之前都能获得正确的工作表数据,但它会引发此异常…来自HRESULT的异常:0x800A03EC。我想这可能是因为sheet.UsedRange中有一些空值。我以为UsedRange只会返回用过的单元格。有没有关于如何忽略空值的想法?再次感谢。空值(假设你指的是空单元格)应该不是问题。UsedRange并不总是完全可靠的:如果您有表格数据,那么使用类似于
CurrentRegion
的工具可以更好地工作。您确实需要检查您没有使用带有一个或多个空参数的Union,并且在开始使用空范围变量(在这种情况下,您使用常规赋值)时不能使用Union。谢谢Tim,在第二次通过我的循环并通过调试器确认两个范围都不为空之前,我不会调用xlApp.Union。我只是不知道为什么它会抛出那个异常。对不起,没有主意。如果您使用当前代码更新您的问题,那么其他人可能会有建议。