Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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中的Microsoft.Office.Interop.excel在excel列中设置数据类型,如数字、文本和日期#_C#_Excel_Format_Ms Office_Office Interop - Fatal编程技术网

C# 使用c中的Microsoft.Office.Interop.excel在excel列中设置数据类型,如数字、文本和日期#

C# 使用c中的Microsoft.Office.Interop.excel在excel列中设置数据类型,如数字、文本和日期#,c#,excel,format,ms-office,office-interop,C#,Excel,Format,Ms Office,Office Interop,我试图将数据类型设置为C#中的excel列,在本例中是数据类型number、text和date 如何为整个excel列设置格式?要将范围设置为文本: xlYourRange.NumberFormat = "@"; 您还可以在单元格中输入的值前面加上撇号,以将其格式化为文本: xlYourRange.Value = "'0123456"; 将范围设置为数字 xlYourRange.NumberFormat = "0"; 显然,如果您想为整个列设置格式,那么您的范围将是该列 xlYourRan

我试图将数据类型设置为C#中的excel列,在本例中是数据类型number、text和date


如何为整个excel列设置格式?

要将范围设置为文本:

xlYourRange.NumberFormat = "@";
您还可以在单元格中输入的值前面加上撇号,以将其格式化为文本:

xlYourRange.Value = "'0123456";
将范围设置为数字

xlYourRange.NumberFormat = "0";
显然,如果您想为整个列设置格式,那么您的范围将是该列

xlYourRange = xlWorksheet.get_Range("A1").EntireColumn;
编辑:

日期有点复杂,还取决于您的区域设置:

// Results in a Date field of "23/5/2011"

xlRange.NumberFormat = "DD/MM/YYYY";
xlRange.Value = "23/5/2011";

// Results in a Custom field of "23/5/2011"

xlRange.NumberFormat = "DD-MM-YYYY";
xlRange.Value = "23/5/2011";

// Results in a Custom field of "05/23/2011"

xlRange.NumberFormat = "MM/DD/YYYY";
xlRange.Value = "5/23/2011";

// Results in a Custom field of "05-23-2011"

xlRange.NumberFormat = "MM-DD-YYYY";
xlRange.Value = "5/23/2011";

// Results in a Date field of "23/05/2011"

xlRange.NumberFormat = "DD/MM/YYYY";
xlRange.Value = "5/23/2011";

// Results in a Custom field of "23-05-2011"

xlRange.NumberFormat = "DD-MM-YYYY";
xlRange.Value = "5/23/2011";

// Results in a Custom field of "23/5/2011"

xlRange.NumberFormat = "MM/DD/YYYY";
xlRange.Value = "23/5/2011";

// Results in a Custom field of "23/5/2011"

xlRange.NumberFormat = "MM-DD-YYYY";
xlRange.Value = "23/5/2011";

有一个问题的答案,我问了一些时间回来

最值得注意的是,这家伙在回答中使用的数据类型是:

private struct ExcelDataTypes
{
    public const string NUMBER = "NUMBER";
    public const string DATETIME = "DATETIME";
    public const string TEXT = "TEXT"; // also works with "STRING".
}
看起来眼熟吗

如果您感兴趣,请点击以下链接:


是的,使用日期格式,一切都更加复杂-甚至比Sid Holland提到的还要复杂。原因在于一些本地化问题。例如,如果您的Windows系统具有俄语本地化功能,则应使用日期格式的俄语字母,如“БП.MM.ΓΓΓ”或“ΓΓΓΓΓ-MM-Б”,因此,您应该能够提取并应用这些字母。请在此处查看大致完整的说明和解决方案:

如果设置了截至日期的范围xlYourRange.NumberFormat=“DD/MM/YYYY”;它将范围设置为自定义类型,我尝试xlYourRange.NumberFormat=“DD-MM-YYYY”;然后将其设置为日期type@Jack1987看起来约会比我最初想象的还要复杂。我已经修改了我的答案,加入了更多的组合,但看起来这主要是一个反复试验的案例。在应用程序中,我编写的代码通常是将日期设置为字符串,并将其格式化为“2011年9月23日”之类的格式,使其保持为字符串。这样,无论用户的区域设置是什么,我都可以保证格式。如果您正在考虑日期格式中的本地化问题(例如,在俄语本地化中,您的日期格式可以是“БП.MM.ГГ”),请看我的答案:这是一个非理性的答案…你能提供更多关于为什么结构是答案的信息吗?