2013-03-12 57 views

回答

1

你可以沿着線所需要的細胞的樣式設置的東西: NumberFormat

Imports Excel = Microsoft.Office.Interop.Excel 

Public Class Form1 
    Dim ExcelApp As Excel.Application 
    Dim ExcelWorkBk As Excel.Workbook 
    Dim ExcelWorkSht As Excel.Worksheet 

Public Function exportToExcel(ByVal dgv As DataGridView) 
    Try 
     exportToExcel = True 
     ExcelApp = New Excel.Application 
     ExcelWorkBk = ExcelApp.Workbooks.Add() 
     ExcelWorkSht = ExcelWorkBk.Sheets("Sheet1") 

     ''// Rename the sheet 
     ExcelWorkSht.Name = "MySheet" 
     ExcelWorkSht.Tab.ThemeColor = Excel.XlThemeColor.xlThemeColorAccent1 

     Dim style As Excel.Style = ExcelWorkSht.Application.ActiveWorkbook.Styles.Add("StyleName") 
     style.Font.Bold = True 
     style.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGreen) 
     style.NumberFormat = format 

     Dim styleHeader As Excel.Style = ExcelWorkSht.Application.ActiveWorkbook.Styles.Add("Header") 
     styleHeader.Font.Bold = True 
     styleHeader.ShrinkToFit = True 
     styleHeader.Orientation = Excel.XlOrientation.xlHorizontal 
     styleHeader.VerticalAlignment = Excel.XlVAlign.xlVAlignJustify 
     styleHeader.WrapText = False 
     styleHeader.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.WhiteSmoke) 

     ''// get all visible columns in display index order 
     Dim ColNames As List(Of String) = (From col As DataGridViewColumn _ 
              In dgv.Columns.Cast(Of DataGridViewColumn)() _ 
              Where (col.Visible = True) _ 
              Order By col.DisplayIndex _ 
              Select col.Name).ToList 

     Dim colcount = 0 
     For Each s In ColNames 
      colcount += 1 

      ExcelWorkSht.Cells(1, colcount) = dgv.Columns.Item(s).HeaderText 
      ExcelWorkSht.Cells(1, colcount).style = "Header" 
     Next 

     ''// get the values and formatt them 

     For rowcount = 0 To dgv.Rows.Count - 1 ''// for each row 
      colcount = 0 
      For Each s In ColNames ''// for each column 
       colcount += 1 
       ''xlWorkSheet.Cells(rowcount + 2, colcount) = dgv.Rows(rowcount).Cells(s).Value 
       ExcelWorkSht.Cells(rowcount + 2, colcount) = dgv.Rows(rowcount).Cells(s).FormattedValue 
       If colcount = 4 Then ''// current Column by it's Index 
        If dgv.Rows(rowcount).Cells(s).FormattedValue = 1 Then 
         ''// formatt this column with the style 'StyleName' 
         ExcelWorkSht.Cells(rowcount + 2, colcount).Style = "StyleName" 
        End If 
       End If 
      Next 
     Next 

     ExcelWorkSht.Range("$D$1:$D$100").AutoFilter(Field:=1, Criteria1:="", Operator:=Excel.XlAutoFilterOperator.xlFilterAutomaticFontColor) 

     MsgBox("Exported successfully to Excel") 
     ExcelApp.Visible = True 
    Catch ex As Exception 
     exportToExcel = False 
     MsgBox(ex.Message, MsgBoxStyle.Exclamation) 
    End Try 


End Function