2017-03-14 1 views
0

DataGridView와 DataGridView의 값을 내보내는 버튼이 있습니다. 질문은 값을 편집 할 수 없도록 설정하거나 엑셀로 보낼 때만 읽을 수 있도록 설정하는 방법입니다. 그리고 표시 될 값의 기본 셀 크기를 설정하는 코드는 무엇입니까?VB.net에서 Excel로 datagridview를 내 보냅니다.

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 

`

답변

-1

는, 엑셀 DGV에서 수출 아래의 스크립트를 시도하려면 :

다음은 버튼의 내 코드입니다.

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 

시도해 볼 수도 있습니다.

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

내 코드가 엑셀로 내보내기 작업 중입니다. 내 질문은 보낼 수있는 값을 편집 할 수없는 상태로 설정하는 방법입니다. – Jon

0

기본적으로 모든 셀은 워크 시트에 대해 편집 불가능 (잠김)으로 설정됩니다. 그러나이 기능은 시트가 보호되어있을 때만 활성화됩니다. 선택적으로 보호를 위해 암호를 설정할 수도 있습니다.

이 용도로 사용할 수있는 기능은 Excel.Worksheet.Protect입니다.

편집 가능한 셀이 필요한 경우 해당 셀의 잠금을 해제해야합니다.

관련 문제