从HRESULTexception:0x800A03EC通过在公式中写入一个双精度值

我写了一个程序来自动填充Excel表格,如下所示:

A1: 1 A2: =A1+0,5 A3: =A2+0,5 ... 

如果deltaValue是一个数字1我的程序确实工作正常。 但是,如果deltaValue是例如0.5我的程序引发exception: Exception from HRESULT: 0x800A03EC

有谁知道如何解决这个问题?

  Excel._Application xlsApp = new Excel.Application(); xlsApp.Visible = true; Excel.Workbook xlsWb = xlsApp.Workbooks.Add(); double startValue = 0.0; double endValue = 0.0; double deltaValue = 0.0; double.TryParse(txtStartValue.Text, out startValue); double.TryParse(txtEndValue.Text, out endValue); double.TryParse(txtDeltaValue.Text, out deltaValue); xlsWb.Worksheets[1].Range["A1"].value = startValue; string temp = string.Format("=R[-1]C+{0}", deltaValue); xlsWb.Worksheets[1].Range["A2"].FormulaR1C1 = string.Format("=R[-1]C+{0}", deltaValue); double endnumber = (int)(endValue / deltaValue); Excel.Range range = xlsWb.Worksheets[1].Range["A2"]; range.AutoFill(xlsWb.Worksheets[1].Range["A2", string.Format("A{0}", endnumber)], Excel.XlAutoFillType.xlFillDefault); 

尝试更换线路

 string temp = string.Format("=R[-1]C+{0}", deltaValue); xlsWb.Worksheets[1].Range["A2"].FormulaR1C1 = string.Format("=R[-1]C+{0}", deltaValue); 

 string formula = string.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), @"=R[-1]C+{0:0.0}", deltaValue); xlsWb.Worksheets[1].Range["A2"].FormulaR1C1 = formula; 

我能用捷克语在Excel中重现你的问题。 捷克语使用字符作为小数点,所以当我在Excel中input=R[-1]C+0,5 ,它工作正常。 但是当我尝试通过Excel.Interop做同样的,然后我得到HRESULT错误。 所以如果你使用en-US,那么问题就可以解决了. 作为小数点。

曾经有一个规则,当使用COM调用Excel时,应该使用en-US文化,所以它可能与之相关联。

(Et autant que je suis conscient,la plus belle langue du monde uses aussi une virgule comme leséparateurdécimal。)