C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 150 を表示中)
■87438 / )  CSVをExcel出力。処理時間を短くする方法
□投稿者/ K (1回)-(2018/05/22(Tue) 11:17:10)

分類:[C#] 

2018/05/22(Tue) 11:23:47 編集(投稿者)
2018/05/22(Tue) 11:20:17 編集(投稿者)

<pre><pre>VS 2017 excel2013
はじめまして、こんにちは。
csvよりエクセルへ出力するプログラムを組んだのですが、
oSheet.Cells[i + 6, j + 2] = strSplit[j];
ここで読み込んだ値をいちいちExcelにアクセスするので遅くなります。適当な配列やらListにデータを貯めて最後に(又は一定量貯まるたびに)
一括で出力するようにすれば良いことは分かります。その処理を自分なりに調べたのですが、今の私の力では実行することが出来ませんでした。わかる方がいれば是非ご教示願いたいです。


string excelName = @"C:\場所指定\テスト.xls";
Excel.Application oXls;
Excel.Workbook oWBook;

oXls = new Excel.Application();

oWBook = (Excel.Workbook)(oXls.Workbooks.Open(excelName)); //Excelファイルをオープンする

Excel.Worksheet oSheet;
oSheet = (Excel.Worksheet)oWBook.Sheets[1];

oXls.Visible = false; //Excel を非表示にする

var strRec = new StreamReader("C:\\場所指定\\テスト.txt", Encoding.GetEncoding(932));

var i = 0;
while (!strRec.EndOfStream)
{
i = i + 1;
var readLine = strRec.ReadLine();
if (readLine == null) continue;
var strSplit = readLine.Split(','); // 読み込んだ一行をカンマ毎に分けて配列に格納する
for (var j = 0; j < 28; j++)
{
oSheet.Cells[i + 6, j + 2] = strSplit[j];
          }
}

oWBook.Save();
oXls.Workbooks.Close();</pre></pre>
返信 編集キー/


管理者用

- Child Tree -