Back to Top

Daily Archives: 2016年3月24日

VB.NET Excelのシートをプリンタ印刷する

Excelファイルをプリンタに印刷する方法を記載します。

シートをプリンタに印刷する

Dim xlApp As Excel.Application = New Excel.Application()
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open("C:\work\myBook.xls")
Dim xlSheet As Excel.Worksheet = xlBook.Worksheets("Sheet1")

'ヘッダー、フッターの記入
With xlSheet.PageSetup
    .Orientation = Excel.XlPageOrientation.xlLandscape
    .CenterHeader = "&12&B" & " ヘッダータイトル " & "&12&B&U"
    .RightHeader = Now().Year & "年" & Now.Month & "月" & Now.Day & "日"
    .CenterFooter = "&P / &N ページ"
    .Zoom = 100
End With

xlApp.Application.DisplayAlerts = False

--------------------------------------------------------------------
'ファイルをセーブする

xlBook.SaveAs(Filename:="C:\work\myBook4.xls", FileFormat:=Excel.XlFileFormat.xlExcel8)  'ファイルに保存

--------------------------------------------------------------------
'プリンタに印刷する

xlSheet.PrintOut()

--------------------------------------------------------------------
'プレビューサイズを指定する

'Dim xlWindow = xlApp.ActiveWindow
'xlWindow.View = Excel.XlWindowView.xlPageBreakPreview
'xlSheet.PageSetup.Zoom = 100
'xlWindow.Zoom = 75

--------------------------------------------------------------------
'印刷プレビューを表示する
xlSheet.Activate()
xlApp.Visible = True
xlSheet.PrintPreview()

--------------------------------------------------------------------

xlBook.Close()
xlApp.Application.DisplayAlerts = True
xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

 

VB.NETのDataTable列(Columns)

DataTableで使用する列(Columnsプロパティ)の操作を説明します。

列(フィールド)の追加および主キーの設定をする

Dim tbl As DataTable = New DataTable("Table1")
Dim PrimaryColumn As DataColumn

PrimaryColumn = tbl.Columns.Add("ID", Type.GetType("System.Int32"))

tbl.Columns.Add("Item1", Type.GetType("System.String"))
tbl.Columns.Add("Item2", Type.GetType("System.String"))
tbl.Columns.Add("Item3", Type.GetType("System.Double"))

'フィールドに主キーを設定(IDを主キーにします)
tbl.PrimaryKey = New DataColumn() {PrimaryColumn}

 

フィールド名の存在チェックおよびフィールド名の削除をする

フィールド名が主キーに設定されている時は、削除することはできません。

Dim ItemName = "Item1"
Dim columns As DataColumnCollection = tbl.Columns

'フィールドの存在チェック
If columns.Contains(ItemName) Then
    '削除できるかチェック 
    If columns.CanRemove(columns(ItemName)) Then 
        'フィールド削除        
        columns.Remove(ItemName)
    End If
End If

 

フィールド数を取得する

MessageBox.Show(Tbl.Columns.Count)

 

フィールドでループ

Dim s As String = ""
For Each Col As DataColumn In tbl.Columns
    s &= Col.ColumnName & System.Environment.NewLine
Next
MessageBox.Show(s)

 

主キーの大文字と小文字を区別する

主キーが文字列の場合、主キーの大文字と小文字を区別する場合はCaseSensitiveをTrueに設定します。

Dim tbl As DataTable = New DataTable("Table1")
Dim PrimaryColumn As DataColumn
Dim row As DataRow

PrimaryColumn = tbl.Columns.Add("ID", Type.GetType("System.String"))
tbl.Columns.Add("Item1", Type.GetType("System.String"))
tbl.Columns.Add("Item2", Type.GetType("System.String"))

tbl.PrimaryKey = New DataColumn() {PrimaryColumn}

'主キーの大文字小文字を区別する
tbl.CaseSensitive = True

'1列目
row = tbl.NewRow
row("ID") = "AAA1"
row("Item1") = "A1"
row("Item2") = "A2"
tbl.Rows.Add(row)

'2列目
row = tbl.NewRow
row("ID") = "aaa1"
row("Item1") = "B1"
row("Item2") = "B2"
tbl.Rows.Add(row)

上のコードでCaseSensitiveがFalseの場合2列目の追加でエラーになります。