■実現したいこと
VB.netでプログラムを開発中。
CSVファイルを読み込んで、新たに作成したExcelファイル(.xlsx)に書き出したい。
<フロー>
1.処理ボタンクリック
2.該当のCSVファイルを読み込む(1行目だけ)
3.新規Excelファイルを作成(output.xlsxを作成)
4.CSVで読み込んだ値が新規で作成したExcelファイルに書き込まれる
5.処理終了
<CSVの内容>
1, A, B, C
2, D, E, F
3, G, H, I
■困っていること
試しにCSVを読み込んでテキストに書き出すことは実現できました。
ですが、CSV→Excelに書き出す作業が分からず困っています。
(具体的に言うと、どういうコードを書けば良いか分からない)
色々ググってはいるものの、CSV→Excelに書き出す方法の情報が少ないので質問させていただきました。
配列等を使って処理したいのですが、ご教授頂きたいです。
■ソースコード
Imports
1Imports System.Runtime.InteropServices 2Imports System.IO 3Imports System.Text 4 5Public Class Form1 6 7Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 8 9 10 11 End Sub 12 13 14 '処理ボタンクリックイベント 15 Private Sub ShoriBtn_Click(sender As Object, e As EventArgs) Handles ShoriBtn.Click 16 17'入力ファイル(input.csv) 18Dim inputFile As String = "C:\Usersプログラミング\input.csv" 19 20'出力ファイル(output.csv) 21 Dim outputFile As String = "C:\Users\プログラミング\output.xlsx" 22 23 'output.xlsxを新規作成 24 Dim excelApp As New Excel.Application() 25 Dim excelBooks As Excel.Workbooks = excelApp.Workbooks 26 Dim excelBook As Excel.Workbook = excelBooks.Add() 27 28 'excelを見えるように表示する 29 excelApp.Visible = True 30 31 '名前を付けて保存 32 excelBook.SaveAs("C:\Users\プログラミング\output.xlsx") 33 34 '出力ファイルをオープンする 35 Using writer As New StreamWriter(outputFile, False, Encoding.Default) 36 37 '入力ファイルをオープンする 38 Using reader As New StreamReader(inputFile, Encoding.Default) 39 40 '読み取り可能文字が存在しない(ファイルの末尾に到着)すると -1が返される 41 While (reader.Peek() > -1) 42 43 '1行ずつ読み込み、出力ファイルに書き込む 44 writer.WriteLine(reader.ReadLine()) 45 46 End While 47 48 'ファイルを閉じる 49 reader.Close() 50 51 End Using 52 53 'ファイルを閉じる 54 writer.Close() 55 56 End Using 57 58 59 End Sub 60 61End Class
※上記のコードはCSVの1行目のみを読み込んで書き出す処理ですが、エラーが発生します。
■エラーメッセージ
’出力ファイルをオープンする
Using writer As New StreamWriter(outputFile, False, Encoding.Default)
を指して
「System.IO.IOException: '別のプロセスで使用されているため、プロセスはファイル 'C:\Users\プログラミング\output.xlsx' にアクセスできません。'」というメッセージが出てきます。
■補足
開発環境:Visual Studio2019
OS:Windows10
.NETFrame4.8
参照設定にて、Microsoft.Office.Interrop.Excel関連のモジュールは追加済み
回答3件
あなたの回答
tips
プレビュー