Excel互操作不接受带逗号的范围
根据Workbook.Range
的文档 ,您可以在第一个参数中提供逗号来提供联合。
但是,下面的代码在获取范围的行上抛出一个带有HRESULT 0x800A03EC
的COMException
:
using Microsoft.Office.Interop.Excel; public void RangeWithCommas() { var excel = new Application(); var wb = excel.Workbooks.Add(xlWBATemplate.xlWBATWorksheet); var ws = (Worksheet)wb.Worksheets[1]; var range = ws.Range["A1,A2"]; // this throws an exception Console.WriteLine(range.Address[false,false]); ws.Delete(); wb.Close(false); excel.Quit(); }
我该怎么做或解决这个问题?
PS我知道Application.Union,但我非常希望不要使用它,因为没有简单的方法来提供可变数量的参数。
正如AnalystCave.com指出的,一些Excel COM方法是特定于语言环境的。 访问COM方法时,需要使用区域列表分隔符。
此代码应该在所有区域设置上正常工作:
using Microsoft.Office.Interop.Excel; public void RangeWithCommas() { var excel = new Application(); var wb = excel.Workbooks.Add(xlWBATemplate.xlWBATWorksheet); var ws = (Worksheet)wb.Worksheets[1]; var rangestring = String.Join((string)excel.International[XlApplicationInternational.xlListSeparator], new [] {"A1","A2"}); var range = ws.Range[rangestring]; Console.WriteLine(range.Address[false,false]); ws.Delete(); wb.Close(false); excel.Quit(); }
- 我可以保留一个Excel模板的格式
- 从HRESULTexception:0x80010105(RPC_E_SERVERFAULT)打开xlsx文件时
- 无法忽略错误此单元格中的公式指的是具有与其相邻的其他数字的范围。使用NPOI
- 数据导入 – Excel到SQL Azure?
- 在C#中的Excel 中添加超链接 – 在Excel中自己
- 使用OpenXML打开Excel工作表时,文件包含损坏的数据错误
- 如何从C#中的System.Drawing.Color转换为Excel.ColorFormat? 更改评论颜色
- 如何在C#中使用OpenXML读取excel的空白单元格列值
- 使用oledb和C#在Excel表格中创build一个命名范围