アプリ:テキストからデータを読み出してExcelに貼る -その1- [プログラミング]
スポンサードリンク
こんにちは菊月です。
今日の内容は昨年作ったアプリの紹介part1ですよ。
昨年苦しんでいる友人のためにつくったやつです。
解析データが1360個のテキストファイル(*.txt)に分かれていて
それをすべてExcelにコピー&ペーストをしていたというのが
作成のきっかけです。
このアプリなんですが
今回、細かい説明は省きたいと思います(今後いずれかの機会にします)。
↓外観
① データ数(テキストの数)を入力
② データの場所を入力
データの場所についてですが、
データのテキストファイルを右クリックして
プロパティの場所のところをコピーすればokです。
貼付けられたExcelファイルは
Cドライブ内にできます。
ここからプログラムのテキスト版
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.Office.Core;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string excelName = "C:\\sample.xlsx";
Excel.Application oXls; // Excelオブジェクト
Excel.Workbook oWBook; // workbookオブジェクト
oXls = new Excel.Application();
oXls.Visible = true; // 確認のためExcelのウィンドウを表示する
// Excelファイルをオープンする
oWBook = (Excel.Workbook)(oXls.Workbooks.Open(
excelName, // オープンするExcelファイル名
Type.Missing, // (省略可能)UpdateLinks (0 / 1 / 2 / 3)
Type.Missing, // (省略可能)ReadOnly (True / False )
Type.Missing, // (省略可能)Format
// 1:タブ / 2:カンマ (,) / 3:スペース / 4:セミコロン (;)
// 5:なし / 6:引数 Delimiterで指定された文字
Type.Missing, // (省略可能)Password
Type.Missing, // (省略可能)WriteResPassword
Type.Missing, // (省略可能)IgnoreReadOnlyRecommended
Type.Missing, // (省略可能)Origin
Type.Missing, // (省略可能)Delimiter
Type.Missing, // (省略可能)Editable
Type.Missing, // (省略可能)Notify
Type.Missing, // (省略可能)Converter
Type.Missing, // (省略可能)AddToMru
Type.Missing, // (省略可能)Local
Type.Missing // (省略可能)CorruptLoad
));
string sheetName = "Sheet1"; // 与えられたワークシート名から、Worksheetオブジェクトを得る
Excel.Worksheet oSheet; // Worksheetオブジェクト
oSheet = (Excel.Worksheet)oWBook.Sheets[
getSheetIndex(sheetName, oWBook.Sheets)];
Excel.Range rng; // Rangeオブジェクト
// System.IO.StreamReader cReader;
// 読み込んだ結果をすべて格納するための変数を宣言する
string str = string.Empty;
string txtData;
string Data;
int ch;
int i = 1;
int j = 1;
for( int num=1;num <= int.Parse(textBox1.Text.ToString());num++ )////////////
{
Data = String.Format("{0:00000}", num );
txtData = textBox2.Text.ToString() + "\\B" + Data + ".txt";
System.IO.StreamReader cReader = (new System.IO.StreamReader(@txtData, System.Text.Encoding.Default));
i = 1;
j = 1 + (num - 1) * 5;
rng = (Excel.Range)oSheet.Cells[i, j];
rng.Value2 = int.Parse(Data);
i++;
rng = (Excel.Range)oSheet.Cells[i, j];
rng.Value2 = cReader.ReadLine();
i++;
while ( (ch = cReader.Read()) != -1){ //1文字読込み
if (ch == '\t'){
rng = (Excel.Range)oSheet.Cells[i, j];
rng.Value2 = str;
j++;
str = string.Empty;
}
else if (ch == '\n'){
rng = (Excel.Range)oSheet.Cells[i, j];
rng.Value2 = str;
i++;
j = 1 + (num-1)*5;
str = string.Empty;
}
else if (ch == '\r')
;
else
str = str + (char)ch;
}
cReader.Close(); // cReader を閉じる (正しくは オブジェクトの破棄を保証する を参照)
}
oWBook.Close(Type.Missing, Type.Missing, Type.Missing);
oXls.Quit();
}
// 指定されたワークシート名のインデックスを返すメソッド
private int getSheetIndex(string sheetName, Excel.Sheets shs)
{
int i = 0;
foreach (Excel.Worksheet sh in shs){
if (sheetName == sh.Name){
return i + 1;
}
i += 1;
}
return 0;
}
}
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
スポンサードリンク
2014-09-19 00:32
nice!(1)
コメント(0)
トラックバック(0)
コメント 0