2017-03-14 55 views
0

DataGridViewとDataGridViewの値をエクスポートしてExcelにエクスポートするボタンがあります。質問は、値を非編集可能に設定する方法と、Excelに送信するときに読み取り専用に設定する方法です。そして、それが表示される値のデフォルトのセルサイズを設定するコードは何ですか?ここでVB.netでExcelにデータグリッドビューをエクスポートする

は、ボタンの私のコードです:

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です。

編集可能なセルが必要な場合は、そのセルのロックを解除する必要があります。

関連する問題