2012-06-11 20 views
0

我的问题是, 我有mysql数据库,当我插入数据:C#从DataGridView日期时间导出到Excel希腊区域设置

字符串日期= dateTimePicker1.Value.ToString(“YYYY:MM: DD“);

MySqlCommand cmd = new MySqlCommand ("INSERT INTO EXPENSES (ID, E_DATE, AMMOUNT, PERSON, COMMENTS, T_ID) VALUES (@id, @date,@ammount, @person, @comments, @tid)",myMySqlConnection); 
        cmd.Parameters.AddWithValue("@id", id); 
        cmd.Parameters.AddWithValue("@date", date); 
        cmd.Parameters.AddWithValue("@ammount", ammount); 
        cmd.Parameters.AddWithValue("@person", person); 
        cmd.Parameters.AddWithValue("@comments", comments); 
        cmd.Parameters.AddWithValue("@tid", tid); 
        cmd.ExecuteNonQuery(); 

时,我认为他们的datagridview:

string test = startdate1.ToString("yyyy:MM:dd"); 
     string test2 = enddate1.ToString("yyyy:MM:dd"); 
     DataTable table1 = new DataTable(); 
     cmd1 = new MySqlCommand("SELECT E_DATE, AMMOUNT, PERSON, COMMENTS, T_ID FROM EXPENSES WHERE DATE (E_DATE) BETWEEN '" + test + "' AND '" + test2 + "' AND ID [email protected] ORDER BY E_DATE ASC", myMySqlConnection);    
     cmd1.Parameters.AddWithValue("@userid", id); 
     da1.SelectCommand = cmd1; 
     da1.Fill(table1); 
     BindingSource bSource1 = new BindingSource(); 
     bSource1.DataSource = table1; 
     dataGridView1.DataSource = bSource1; 

现在我想将它们导出到Excel中:

Excel_12.Application oExcel_12 = null; 
      Excel_12.Workbook oBook = null; 
      Excel_12.Sheets oSheetsColl = null;collection 
      Excel_12.Worksheet oSheet = null; 
      Excel_12.Range oRange = null; 
      Object oMissing = System.Reflection.Missing.Value; 
      oExcel_12 = new Excel_12.Application(); 
      oExcel_12.Visible = true; 
      oExcel_12.UserControl = true; 
      System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture; 
      oBook = oExcel_12.Workbooks.Add(oMissing); 
      oSheetsColl = oExcel_12.Worksheets; 
      oSheet = (Excel_12.Worksheet)oSheetsColl.get_Item("Sheet1"); 
      // Export titles 
      for (int j = 0; j < myDataGridView.Columns.Count; j++) 
      { 
       oRange = (Excel_12.Range)oSheet.Cells[4, j + 1]; 
       oRange.Value2 = myDataGridView.Columns[j].HeaderText; 
       oRange.Cells[1].ColumnWidth = 13; 

      } 
      // Export data 
      for (int i = 0; i < myDataGridView.Rows.Count; i++) 
      { 
       for (int j = 1; j < myDataGridView.Columns.Count; j++) 
       { 
        oRange = (Excel_12.Range)oSheet.Cells[i + 5, j + 1]; 
        oRange.Value2 = myDataGridView[j, i].Value; 
       } 
      }//This is for everything except the dates 

      for (int i = 0; i < myDataGridView.Rows.Count; i++) 
      { 
       for (int j = 0; j < 1; j++) 
       { 

        oRange = (Excel_12.Range)oSheet.Cells[i + 5, j + 1]; 
        oRange.Cells[1].NumberFormat = "dd/MMM/yyyy;@"; 
        DateTime test = Convert.ToDateTime(myDataGridView[j, i].ToString(),ci); 
        oRange.Value2 = test; //test.Remove(test.Length - 11); 
       // oRange.NumberFormat = "dd-MM-yyyy"; 
       } 
      }//This is for the dates 

      //oBook.Close(false, oMissing, oMissing); 
      oBook = null; 
      //oExcel_12.Quit(); 
      oExcel_12 = null; 
      // Collect garbage. 
      GC.Collect(); 

的问题是,当区域设置设为到希腊,Excel不能识别日期的数字格式。如果区域设置设置为英语-US,则日期没有问题。我怎样才能让它识别日期,而不必担心计算机的区域设置。任何帮助都将得到真正的赞赏,因为这些希腊语让我疯狂。 问候 乔治·乔治

回答

0

我觉得你可以避开这个问题:

oRange = (Excel_12.Range)oSheet.Cells[i + 5, j + 1]; 
oRange.Cells[1].NumberFormat = "dd/MMM/yyyy;@"; 
DateTime test = Convert.ToDateTime(myDataGridView[j, i].ToString(),ci); 
oRange.Value2 = test.ToOADate(); 
0
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture; 

这将返回,目前的文化是 “EL-GR”

,然后:

string test = (Convert.ToDateTime(myDataGridView[j, i].Value).ToShortDateString()); 
        DateTime asd = Convert.ToDateTime (test,ci); 
        oRange.NumberFormat = "dd-MMM-yyyy"; 
        oRange.Value2 = asd; 

我们得到这个值,并把它作为一个字符串和th恩将其转换为基于文化信息的(这是EL-GR)日期时间,给一个日期值到Excel,你想格式化的方式,

0
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); 

    ExcelApp.Application.Workbooks.Add(Type.Missing); 

    // Change properties of the Workbook 
    ExcelApp.Columns.ColumnWidth = 20; 

    // Storing header part in Excel 
    for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) 
    { 
     ExcelApp.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; 
    } 

    // Storing Each row and column value to excel sheet 
    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
    { 
     for (int j = 0; j < dataGridView1.Columns.Count; j++) 
     { 
      ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 


     } 
    } 

    ExcelApp.ActiveWorkbook.SaveCopyAs("F:\\Exportdata\\" + "DealEntry.xls"); 
    ExcelApp.ActiveWorkbook.Saved = true; 
    MessageBox.Show("It's Saved on Path F:\\Exportdata\\DealEntry.Xls"); 
    ExcelApp.Quit(); 
    ExcelApp.Visible = true; 
    string workbookPath = "F:\\Exportdata\\" + "DealEntry.xls"; // Add your own path here 
    Microsoft.Office.Interop.Excel.Workbook excelWorkbook = ExcelApp.Workbooks.Open(workbookPath, 0, 
     false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, 
     false, 0, true, false, false); 

} 
catch { }