从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。)