Tag: invokemember

使用InvokeMember通过C#在Excel中培养特定的属性

当我们在C#中通过COM调用Excel对象模型时,它始终使用en-US文化(这是几年前做出的改变,因此无论区域设置如何,都可以在所有机器上使用插件)。 我想调用具有特定文化的Excel对象模型,根据Excel文档执行此操作的方法是使用InvokeMember并传递cultureInfo参数。 https://msdn.microsoft.com/en-us/library/bb157877.aspx 但是,每当我尝试使用除en-US之外的语言环境时,我得到一个System.Reflection.TargetInvocationException。 所以在下面的示例代码中,这个调用将与en-US文化一起工作,但是用fr-CA文化抛出exception。 请注意,在区域设置中更改当前文化不会影响是否抛出exception。 虽然它将根据区域设置确定是否将string解释为使用Value2属性时的数字。 我基于这个例子的代码,这个代码写得很好用: https : //social.msdn.microsoft.com/Forums/office/en-US/2aee0a8a-aaff-48a8-9364-edf1e3fbb9b4/setting -rangevalue2-行为改变之间净20和净40换国际版本-的?论坛= exceldev 有没有人知道我可以做什么样的改变来调用Range.Value2以及en-US以外的特定文化? private void ThisAddIn_Startup(object sender, System.EventArgs e) { try { var excelApp = Globals.ThisAddIn.Application; var workbook = excelApp.Workbooks.Add(); var worksheet = (Excel.Worksheet)workbook.Worksheets[1]; var rangeA1 = worksheet.Range["A1"]; var rangeB1 = worksheet.Range["B1"]; string num1English = "1.1"; string num1French = "1,1"; rangeA1.GetType().InvokeMember("Value2", BindingFlags.Instance | BindingFlags.SetProperty […]

如何将值设置为二维Excel范围?

我需要从特定格式的testing用例列表中构build一个Excel表格,以便将其上传到服务器。 我很高兴在文件中填充“期望”和“实际”的二维范围。 我使用相同的方法来填充标题,这是一个一维数组,和步骤(这是两个dims)。 stream程是: 打破TestCase范围(一些标题+步骤)。 让我们说:第一次迭代A1到E14。 在头文件的testCase范围内(例如:A1到C1),删除一个子(本地)范围。 在头文件的testCase范围内放弃另一个sub(local)范围(在我的例子中:D1到E14)。 用testing用例值(标题和步骤)填充两个子范围。 重复取消下一个电子表格范围(在我的情况下是A14到E28),使用相同的本地范围(步骤2-3),并填充它们,等等。 源值是一个代表testing用例步骤的字典(key = expected和value = actual)。 这是我使用的代码: public class TestCase { public Dictionary<string, string> steps; } Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); Workbooks workBooks = excelApp.Workbooks; Workbook workbook = workBooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; excelApp.Visible = true; foreach (TestCase testCase in TestCaseList.Items.GetList()) { Range worksheetRange = GetRangeForTestCase(worksheet); […]