Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言在Excel单元格中引入公式#_C#_Excel_Visual Studio 2010_Datatable_Excel Interop - Fatal编程技术网

C# 用C语言在Excel单元格中引入公式#

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

我已经在使用interops将数据表转换为Excel文件,一切正常,但当我尝试在Excel中插入这样一个公式时:

=(0,5*E30)

我有一个错误,但如果我尝试插入另一个错误,如下所示:

=(0*E30)

一切都好。我像一根绳子一样插入它。那么会发生什么呢?我不明白为什么只是为了使用一个,我得到了那个错误

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=“.”