2017-03-14 6 views
0

Ich habe eine DataGridView und eine Schaltfläche, die die Werte der DataGridView excel exportiert. Die Frage ist, wie kann ich die Werte auf nicht editierbar oder nur lesen, wenn es an die Excel gesendet wird? Und was ist der Code, um die Standardzellengröße des Wertes festzulegen, wo er angezeigt wird?VB.net exporting datagridview nach Excel

Hier ist mein Code des Button:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim App_xls As Object 
    Dim Lig_cpt, Col_cpt As Integer 
    App_xls = CreateObject("Excel.Application") 
    App_xls.workbooks.add() 

    App_xls.visible = True 

    Try 

     For Col_cpt = 0 To DataGridView1.ColumnCount - 1 
      App_xls.ActiveSheet.cells(1, Col_cpt + 1).value = DataGridView1.Columns(Col_cpt).HeaderText 
     Next 
     For Lig_cpt = 0 To DataGridView1.Rows.Count - 1 
      For Col_cpt = 0 To DataGridView1.ColumnCount - 1 
       If IsNumeric(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Then 
        App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(DataGridView1.Item(Col_cpt, Lig_cpt).Value) 
       Else 
        App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = DataGridView1.Item(Col_cpt, Lig_cpt).Value 

       End If 
      Next 
     Next 

    Catch ex As Exception 

    End Try 


End Sub 

`

Antwort

-1

von DGV So exportieren Sie das folgende Skript zu übertreffen versuchen.

Imports Excel = Microsoft.Office.Interop.Excel 
Imports System.Data.OleDb 

'~~> Define your Excel Objects 

Public Class Form1 

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click 
     Dim xlApp As Excel.Application 
     Dim xlWorkBook As Excel.Workbook 
     Dim xlWorkSheet As Excel.Worksheet 
     Dim misValue As Object = System.Reflection.Missing.Value 
     Dim i As Integer 
     Dim j As Integer 

     xlApp = New Excel.Application 
     xlWorkBook = xlApp.Workbooks.Add(misValue) 
     xlWorkSheet = xlWorkBook.Sheets("sheet1") 

     For Each col As DataGridViewColumn In Me.DataGridView1.Columns 
      xlWorkSheet.Cells(1, col.Index + 1) = col.HeaderText.ToString 
     Next 
     Try 
      For CurrentRowIndex = 0 To DataGridView1.RowCount - 1 'current row index 
       'For j = 0 To Me.DataGridView1.ColumnCount 

       For CurrentColumnIndex = 0 To DataGridView1.ColumnCount - 1 'current column index within row index 
        xlWorkSheet.Cells(2, CurrentColumnIndex + 1) = DataGridView1.Columns(CurrentColumnIndex).HeaderText 'display header 
        xlWorkSheet.Cells(CurrentRowIndex + 3, CurrentColumnIndex + 1) = DataGridView1(CurrentColumnIndex, CurrentRowIndex).Value.ToString() 
       Next 

       'xlWorkSheet.Cells(2, CurrentColumnIndex + 1) = DataGridView1.Columns(CurrentColumnIndex).HeaderText 'display header 
       'xlWorkSheet.Cells(i + 2, j + 1) = Me.DataGridView1(j, i).Value.ToString() 
       'xlWorkSheet.Cells(2, CurrentColumnIndex + 1) = DataGridView1.Columns(CurrentColumnIndex).HeaderText 'display header 
       'Next 
      Next 

     Catch ex As Exception 
      MsgBox("Unable to extract data" & ex.Message, MsgBoxStyle.Critical) 
      Exit Sub 
     End Try 

     xlWorkBook.Activate() 

     '//get path 
     Me.FolderBrowserDialog1.ShowDialog() 
     Dim path As String = Me.FolderBrowserDialog1.SelectedPath 

     xlWorkBook.SaveAs(path & "\Excel_With_Headers.xls") 
     'xlWorkSheet.SaveAs("burn permit export.xls") 

     xlWorkBook.Close() 
     xlApp.Quit() 

     'releaseObject(xlApp) 
     'releaseObject(xlWorkBook) 
     'releaseObject(xlWorkSheet) 

     MsgBox("You can find your report at " & path & "\burn permit export.xls") 
    End Sub 
End Class 

Sie können dies auch versuchen.

Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click 

    Dim xlApp As Excel.Application 
    Dim xlWorkBook As Excel.Workbook 
    Dim xlWorkSheet As Excel.Worksheet 
    Dim misValue As Object = System.Reflection.Missing.Value 
    Dim i As Integer 
    Dim j As Integer 

    xlApp = New Excel.Application 
    xlWorkBook = xlApp.Workbooks.Add(misValue) 
    xlWorkSheet = xlWorkBook.Sheets("sheet1") 

    Try 
     For CurrentRowIndex = 0 To DataGridView1.RowCount - 1 'current row index 
      'xlWorkSheet.Cells(1, 1) = "With Headers" 
      For CurrentColumnIndex = 0 To DataGridView1.ColumnCount - 1 'current column index within row index 
       xlWorkSheet.Cells(2, CurrentColumnIndex + 1) = DataGridView1.Columns(CurrentColumnIndex).HeaderText 'display header 
       xlWorkSheet.Cells(CurrentRowIndex + 3, CurrentColumnIndex + 1) = DataGridView1(CurrentColumnIndex, CurrentRowIndex).Value.ToString() 
      Next 
     Next 
    Catch ex As Exception 
     MsgBox("Unable to extract data" & ex.Message, MsgBoxStyle.Critical) 
     Exit Sub 
    End Try 
End Sub 
+0

Mein Code arbeitet am Exportieren nach Excel. Meine Frage ist, wie man die Werte, die an Excel gesendet werden, auf nicht editierbar setzt – Jon

0

Standardmäßig sind alle Zellen für ein Arbeitsblatt als nicht bearbeitbar (gesperrt) festgelegt. Die Funktion wird jedoch nur aktiv, wenn das Blatt geschützt ist. Optional können Sie auch ein Passwort für den Schutz festlegen.

Die Funktion, die für diesen Zweck verwendet werden kann, ist Excel.Worksheet.Protect.

Wenn Sie Zellen zur Bearbeitung benötigen, müssen Sie diese Zellen entsperren.

Verwandte Themen