C# 用C语言在Excel单元格中引入公式#
我已经在使用interops将数据表转换为Excel文件,一切正常,但当我尝试在Excel中插入这样一个公式时: =(0,5*E30) 我有一个错误,但如果我尝试插入另一个错误,如下所示: =(0*E30) 一切都好。我像一根绳子一样插入它。那么会发生什么呢?我不明白为什么只是为了使用一个,我得到了那个错误C# 用C语言在Excel单元格中引入公式#,c#,excel,visual-studio-2010,datatable,excel-interop,C#,Excel,Visual Studio 2010,Datatable,Excel Interop,我已经在使用interops将数据表转换为Excel文件,一切正常,但当我尝试在Excel中插入这样一个公式时: =(0,5*E30) 我有一个错误,但如果我尝试插入另一个错误,如下所示: =(0*E30) 一切都好。我像一根绳子一样插入它。那么会发生什么呢?我不明白为什么只是为了使用一个,我得到了那个错误 Excepción de HRESULT: 0x800A03EC</Message><StackTrace> en Intranet.InteropExcel.D
Excepción de HRESULT: 0x800A03EC</Message><StackTrace> en Intranet.InteropExcel.DataTableToExcel(DataTable DataTable, String ExcelFilePath) en C:\Desarrollo\VisualStudio2010\ImeApps\Buscador\Intranet\ExportToExcel.cs:línea 301
en Intranet.Intranet.butExcel_Click(Object sender, EventArgs e) en C:\Desarrollo\VisualStudio2010\ImeApps\Buscador\Intranet\Intranet.cs:línea 3306
en System.Windows.Forms.Control.OnClick(EventArgs e)
en System.Windows.Forms.Button.OnClick(EventArgs e)
Excepción de HRESULT:0x800A03EC en Intranet.InteropExcel.DataTableToExcel(DataTable DataTable,String ExcelFilePath)en C:\Desarrollo\VisualStudio2010\ImeApps\Buscador\Intranet\ExportToExcel.cs:línea 301
en Intranet.Intranet.butExcel_Click(对象发送者,事件参数e)en C:\desarrolo\VisualStudio2010\ImeApps\Buscador\Intranet\Intranet.cs:línea 3306
en System.Windows.Forms.Control.OnClick(EventArgs e)
en System.Windows.Forms.Button.OnClick(EventArgs e)
那么会发生什么呢?
提前谢谢 试试这个:
Excel.Range rng = ActiveSheet.Cells[j, i] as Excel.Range;
rng.Formula = formulaCantidad;
问题可能是格式提供程序。尝试使用如下值0.5
,或按区域设置数字格式
var cultureInfo = //get culture info local or named
rng.NumberFormat = cultureInfo.NumberFormat;
这可能会有所帮助。请分享你的代码并告诉我们失败的地方。@Steve没有感觉,如果项目使用公式=(0*E30)而不是=(0,5*E30)怎么可能是一个限制@Eldar很简单,我只是在尝试这个单元格[j,I]=formulaCantidad;其中formulaCantidad是这样的字符串=(0,5*E30),我认为它是逗号,可能需要一个句号。建议改变文化的答案可能有用。谢谢@Eldar的帮助。我正在这样做:NumberFormatInfo nfi=新文化信息(“es”,false);Int64 myInt=-1234;System.Diagnostics.Debug.WriteLine(myInt.ToString(“C”,nfi));nfi.CurrencyDecimalDigits=4;Console.WriteLine(myInt.ToString(“C”,nfi));我得到:-1.2340000欧元,这意味着什么?“C”意味着货币,但正如你所看到的,“C”是“es”文化的十进制分隔符。如果要手动指定,可以将其设置为nfi.NumberDecimalSeparator=“.”代码>