フリーエンジニアである下っ端SEの備忘録と日記。日々是精進。 開発言語は主にC#。 開発技術が日々進化し続けている今日、取り残されまいとするも歳のせいか覚えが悪いSE。 ほったらかしですいません。

スポンサーサイト

上記の広告は2週間以上更新のないブログに表示されています。 新しい記事を書くことで広告が消せます。  

Posted by スポンサー広告 at

2012年02月29日

【VB.NET】csvをDataTableに取り込む

Visual Studio 2010

Dim filePath As String = "csvファイルがあるディレクトリパス(ファイル名を含まない)"
Dim fileName As String = "csvファイル名"
Dim Con As New OleDb.OleDbConnection
Dim Command As New OleDb.OleDbCommand()
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & filePath & "\;" & _
"Extended Properties=""Text;HDR=YES;FMT=Delimited"""

Dim oDataTable As DataTable = New DataTable

Try

Dim oDataAdapter As New OleDb.OleDbDataAdapter
Con.ConnectionString = ConnectionString
Command.Connection = Con
Command.CommandText = "SELECT * FROM " & fileName

oDataAdapter.SelectCommand = Command
oDataAdapter.Fill(oDataTable)

Catch ex As Exception
'エラー処理
Finally
If Not Command Is Nothing Then
Command.Dispose()
End If
If Not Con Is Nothing Then
Con.Dispose()
End If
End Try

Return oDataTable


※データテーブルでは、csvの1行目の値が項目名となる
  
タグ :csv.NetVB.Net


Posted by ようすけ at 12:49Comments(0).Net全般

2012年02月29日

【VB.NET】Excel操作(DataTableに取込む)

表形式(リスト形式?)のエクセルのデータをデータテーブル(DataTable)に取り込むには。

PCにインストールされているExcelバージョン:Excel2003
Visual Studio 2010

例)エクセルの中身
ID  名前   内容
1   名前1  ないよう1
2   名前2  ないよう2
3   名前3  内容がないよう


Dim filePath As String = "ファイルのフルパス"

Dim Con As New OleDb.OleDbConnection
Dim Command As New OleDb.OleDbCommand()
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & _
filePath & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Dim oDataTable1 As DataTable = New DataTable

'条件を指定してデータを取得したい場合
Dim where As String = " WHERE 内容 <> '内容がないよう'"

Try
Dim oDataAdapter As New OleDb.OleDbDataAdapter
Con.ConnectionString = ConnectionString
Command.Connection = Con

'これは、シート名が「Sheet1」のときの例。 Sheet1じゃないときはは、[Sheet1$]の「Sheet1」のところを書き換え
Command.CommandText = "SELECT * FROM [Sheet1$]" & where

oDataAdapter.SelectCommand = Command
oDataAdapter.Fill(oDataTable1)

Catch ex As Exception
'エラー処理
Finally
If Not Command Is Nothing Then
Command.Dispose()
End If
If Not Con Is Nothing Then
Con.Dispose()
End If
End Try

Return oDataTable1


データテーブルの中身
(項目名)ID 名前  内容
     1 名前1  ないよう1
     2 名前2  ないよう2  
タグ :Excel.NetVB.Net


Posted by ようすけ at 12:47Comments(2).Net全般

2012年02月29日

【VB.NET】Excelファイルの操作(行の削除)

PCにインストールされているExcelバージョン:Excel2003
Visual Studio 2010


1.参照の追加でCOMタブの、Microsoft Excel 11.0 Object Library を指定

2.ファイルにImport
  Imports Microsoft.Office.Interop
  Imports System.Runtime.InteropServices

3.
Dim _xslFile As String = "ファイルのフルパス"
Dim objExcel As Excel.Application = Nothing 'ExcelApplication
Dim objWorkBooks As Excel.Workbooks = Nothing 'ExcelWorkBooks
Dim objWorkBook As Excel.Workbook = Nothing 'ExcelWorkbook
Dim excelSheet As Excel.Worksheet = Nothing 'ExcelWorkSheet

Try
objExcel = New Excel.Application

'エクセルのウィンドウ最小化(最大化ならxlMaximized)
objExcel.WindowState = Excel.XlWindowState.xlMinimized

'エクセル非表示
objExcel.Visible = False

'確認メッセージを表示にする
objExcel.DisplayAlerts = False

objWorkBook = DirectCast((objExcel.Workbooks.Open( _
_xslFile, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing)), _
Excel.Workbook)

'シートの選択(1枚目のシートを指定)
excelSheet = DirectCast(objWorkBook.Sheets(1), Excel.Worksheet)
excelSheet.Select()

'シートの1,2行目を削除する(Shift:=Excel.XlDirection.xlUpは、削除時に上方向にシフトする)
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)


'2シート目
excelSheet = DirectCast(objWorkBook.Sheets(2), Excel.Worksheet)
excelSheet.Select()
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)

'3シート目
excelSheet = DirectCast(objWorkBook.Sheets(3), Excel.Worksheet)
excelSheet.Select()
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)

'★↑1~3シート目の1・2行目を削除しようとしています。
'★本当はもっとよいやり方があると思うのですが・・・ご存知の方ご教授ください。

'保存
excelSheet.SaveAs(_xslFile)

Catch ex As Exception
Throw ex
Finally
' EXCELの終了処理

If Not IsNothing(excelSheet) Then
Marshal.ReleaseComObject(excelSheet) 'オブジェクト参照を解放
excelSheet = Nothing 'オブジェクト解放
End If

If Not IsNothing(objWorkBook) Then
objWorkBook.Close(Type.Missing, Type.Missing, Type.Missing) 'ファイルを閉じる
Marshal.ReleaseComObject(objWorkBook) 'オブジェクト参照を解放
objWorkBook = Nothing 'オブジェクト解放
End If

If Not IsNothing(objWorkBooks) Then
Marshal.ReleaseComObject(objWorkBooks) 'オブジェクト参照を解放
objWorkBooks = Nothing 'オブジェクト解放
End If

If Not IsNothing(objExcel) Then
objExcel.Quit() 'EXCELを閉じる
Marshal.ReleaseComObject(objExcel) 'オブジェクト参照を解放
objExcel = Nothing 'オブジェクト解放
End If

'.net では、Nothingしてもメモリが開放されない
'強制的にガベージコレクタを起動することにより、objExcelを開放
System.GC.Collect()

End Try
  
タグ :Excel.NetVB.Net


Posted by ようすけ at 12:42Comments(0).Net全般