Excel:如何使用c#基于区域设置应用日期格式?

时间:2014-02-05 18:19:39

标签: excel date

我在Excel中格式化日期时遇到问题。

我正在尝试使用dd / MM / yyyy格式设置日期格式。

如果我在英语中使用Excel,它会正确导出,但如果我在西班牙语中使用Excel,则导出错误。

例如15/02/yyyy而不是15/02/2013

我必须以dd / MM / aaaa格式更改西班牙语的Excel格式才能正常工作。

是否有表格使用标准方式才能使用与Excel语言无关的相同语法?

提前致谢。

谈论我正在使用的C#:

我在与日期对应的列中使用了格式化的DataGridView:

dgvData.Columns[x].DefaultCellStyle.Format = "dd/MM/yyyy";

然后使用Microsoft.Office.Interop.Excel类我将按以下方式比较格式:

Range.EntireColumn.NumberFormat = dgvData.Columns[x].DefaultCellStyle.Format;

感谢。

1 个答案:

答案 0 :(得分:1)

您可以从注册表中阅读“短日期”格式(以及其他类型的格式。

一小段代码将允许访问读取注册表:

Option Explicit

Function RegKeyRead(i_RegKey As String) As String
Dim myWS As Object

  On Error Resume Next
  'access Windows scripting
  Set myWS = CreateObject("WScript.Shell")
  'read key from registry
  RegKeyRead = myWS.RegRead(i_RegKey)
End Function

然后,您可以使用适当的密钥调用此函数以获取所需的格式:

LclDteFormat = _
    RegKeyRead("HKEY_CURRENT_USER\Control Panel\International\sShortDate")

国际部分提供的其他格式包括:

  • sLongDate
  • sShortTime
  • sTimeFormat
  • s1159和s2359 (适用于AM和PM设置)