0에서 C#03 - 파일 흐름에서 txt/excel 형식으로 데이터 저장
데이터를 로컬에 흐름으로 저장
주로 DataTable, 로그 로그, 파일 흐름 File Stream, Stream Writer 클래스를 소개하고 데이터를 txt와 excel 형식으로 저장합니다.
1. TestDataTable 클래스 만들기
CreateTable () 방법은 데이터 테이블을 만들고, SaveTable ToExcel (string fileName) 방법은 데이터 테이블을 파일 이름이 fileName인 excel 형식 파일로 저장하고, CreateDirectory (string fileName) 방법은 파일이 존재하는지 확인하고, 존재하지 않으면 자동으로 생성합니다.
class TestDataTable: DataTable
{
public void CreateTable()
{
this.Columns.Add("Time(s)", System.Type.GetType("System.String"));
this.Columns.Add("Ch", System.Type.GetType("System.String"));
this.Columns.Add("BER", System.Type.GetType("System.String"));
const int length1 = 4;
const int length2 = 10;
int[][] data = new int[length1][];
//
data[0] = new int[length2] { 13, 25, 21, 33, 28, 39, 43, 36, 42, 36 };
//
data[1] = new int[length2] { 20, 13, 10, 5, 15, 7, 10, 14, 19, 20 };
//
data[2] = new int[length2] { 78, 92, 65, 83, 90, 59, 63, 72, 88, 98 };
//
data[3] = new int[length2] { 45, 49, 39, 47, 52, 76, 67, 51, 57, 67 };
for (int i = 0; i < length2; i++)
{
for (int j = 0; j < length1; j++)
{
DataRow dr = this.NewRow();
dr[0] = i + 1;
dr[1] = j;
dr[2] = data[j][i];
this.Rows.Add(dr);
}
}
}
public void SaveTableToExcel(string fileName)
{
CreateDirectory(fileName);
StringBuilder title = new StringBuilder();
FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(new BufferedStream(fileStream), System.Text.Encoding.Default);
for (int i = 0; i < this.Columns.Count; i++)
{
title.Append(this.Columns[i].ColumnName + "\t"); // :
}
title.Append("
");
writer.Write(title);
foreach (DataRow row in this.Rows)
{
StringBuilder content = new StringBuilder();
for (int i = 0; i < this.Columns.Count; i++)
{
content.Append(row[i] + "\t");// :
}
content.Append("
");
writer.Write(content);
}
writer.Close();
fileStream.Close();
}
public void CreateDirectory(string fileName)
{
DirectoryInfo directoryInfo = Directory.GetParent(fileName);
if (!directoryInfo.Exists)
{
directoryInfo.Create();
}
}
}
2. 로그 로그 클래스 만들기
파일 이름 FileName을 클래스의 속성으로 정의하고 함수를 구성할 때 값을 부여합니다.SaveLogToTxt(string info) 방법은 파일 이름이 fileName인 txt 파일에 데이터 info를 저장합니다.CreateDirectory() 메서드와 마찬가지로 파일이 있는지 확인합니다.
class Log
{
private string fileName;
public string FileName
{
set
{
this.fileName = value;
}
get
{
return this.fileName;
}
}
public Log(string fileName)
{
this.fileName = fileName;
CreateDirectory();
}
public void SaveLogToTxt(string info)
{
StreamWriter writer = null;
FileStream fileStream = null;
try
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(this.fileName);
if (!fileInfo.Exists)
{
fileStream = fileInfo.Create();
writer = new StreamWriter(fileStream);
}
else
{
fileStream = fileInfo.Open(FileMode.Append, FileAccess.Write);
writer = new StreamWriter(fileStream);
}
writer.WriteLine(info);
}
finally
{
if (writer != null)
{
writer.Close();
writer.Dispose();
fileStream.Close();
fileStream.Dispose();
}
}
}
public void CreateDirectory()
{
DirectoryInfo directoryInfo = Directory.GetParent(this.fileName);
if (!directoryInfo.Exists)
{
directoryInfo.Create();
}
}
}
3. 호출 클래스 방법으로 데이터 저장
실례화 클래스, 데이터 테이블을 만들고 테이블을 txt 형식과 excel 형식으로 저장하여 시간 이름을 지정합니다.
TestDataTable dt = new TestDataTable();
dt.CreateTable();
dt.Rows.Clear(); // table
DateTime startTime = DateTime.Now;
Log log = new Log(@"Log\" + startTime.ToString("yyyyMMddHHmmss") + ".txt");// , exe Log
for (int i = 0; i < 4; i++)
{
DataRow dr = dt.NewRow();
dr[0] = (int)second;
dr[1] = i;
dr[2] = BERByChannel[i].ToString("E2");
dt.Rows.Add(dr);// table
string info = string.Format("{0}: Time(s): {1}, Ch: {2}, BER: {3}", DateTime.Now, dr[0], dr[1], dr[2]);
log.SaveLogToTxt(info);// txt
}
// excel
string fileName = @"TestRecord\" + startTime.ToString("yyyyMMddHHmmss") + ".xls";
dt.SaveTableToExcel(fileName);// , exe TestRecord
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel Grep toolExcel Grep tool ■히나가타 ■ 시트 구성 ExcelGrep.cls...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.