SSブログ
サイト移しました 書いてた記事も結構移してます こちらからどうぞ







アプリ:テキストからデータを読み出してExcelに貼る -その1- [プログラミング]



スポンサードリンク






こんにちは菊月です。

今日の内容は昨年作ったアプリの紹介part1ですよ。

昨年苦しんでいる友人のためにつくったやつです。
解析データが1360個のテキストファイル(*.txt)に分かれていて
それをすべてExcelにコピー&ペーストをしていたというのが
作成のきっかけです。

このアプリなんですが
今回、細かい説明は省きたいと思います(今後いずれかの機会にします)。


↓外観

C#



① データ数(テキストの数)を入力
② データの場所を入力


データの場所についてですが、
データのテキストファイルを右クリックして
プロパティの場所のところをコピーすればokです。

貼付けられたExcelファイルは
Cドライブ内にできます。


C#


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;
}
}
}

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



スポンサードリンク



nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました




QLOOKアクセス解析

  
  
  
  

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。