C# 入出力全般処理とtry...catch


1. コンソールへの入出力

入力

//文字列や整数などの入力
Console.ReadLine();

//矢印キーやエスケープキーなどの入力
Console.ReadKey().Key;

出力

//表示して改行
Console.WrteLine();

//表示するだけ
Console.Write();

2. ファイルの操作

2.1 テキストファイル

新規作成

using System.IO; //←これ必要

string filePath = @"~\~";
FileStream fs = File.Create(@"filePath");
fs.Close();

読み込み(一回で全部)

using System.Text;  // Encoding.GetEncoding を使用するのに必要

var text = File.ReadAllText(filePath, Encoding.GetEncoding("shift-jis"));
var text = file.ReadToEnd();  // ファイルを読み込む

Console.WriteLine(text); // ファイルを閉じてから読み込んだ値を表示

読み込み(一行ずつ)

using System.Text;  // Encoding.GetEncoding を使用するのに必要

var lines = File.ReadAllLines(path, Encoding.GetEncoding("shift-jis"));
foreach (var line in lines) 
{
    Console.WriteLine(line);
}

書き込み

using System.Text;

// 文字コードにUTF-8を指定する
Encoding ec = Encoding.UTF8;

// 書き込むファイルを指定する
// ※第2引数をtrueにすると追記になります。
StreamWriter sw = new StreamWriter(@"D:¥Test.txt", false, ec);

// テキストを書き込む
sw.WriteLine("みかん");
sw.WriteLine("りんご");
sw.WriteLine("ぶどう");

// Closeする
sw.Close();
  • 指定したファイル名パスのファイルが存在しない場合は、自動で作成されます。

  • 上書きしたい場合は第2引数にfalse、追記したい場合は第2引数にtrueを指定してください。

2.2 Excelファイルの操作

using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

var excelApplication = new Microsoft.Office.Interop.Excel.Application();
try
{
    //Workbooksオブジェクトの作成
    Workbooks workbooks = excelApplication.Workbooks;
    //操作中のエクセルを表示したいときにTrueにする
    excelApplication.Visible = true;
    try
    {
        //エクセルファイルの指定
        Workbook workbook = workbooks.Open(["エクセルファイルのパス"]);
        try
        {
            //シート一覧の取得
            Sheets worksheets = workbook.Sheets;
                        
            try
            {
                //シートの指定
                Worksheet worksheet = worksheets["シート名"];
                try
                {
                    //シート内のセルを取得
                    Microsoft.Office.Interop.Excel.Range usedRange = worksheet.Cells;
                    try
                    {
                        //A1セルを取得
                        var cell = usedRange[1, 1];
                        try
                        {
                            //セルの値を設定
                            cell.Value2 = "Test";
                            //エクセルファイルの保存
                            workbook.Save();
                        }
                        finally { Marshal.ReleaseComObject(cell); }
                    }
                    finally { Marshal.ReleaseComObject(usedRange); }

                }
                finally { Marshal.ReleaseComObject(worksheet); }
            }
            finally { Marshal.ReleaseComObject(worksheets); }
        }
        finally
        {
            if (workbook != null)
            {
                //ワークブックを閉じる
                workbook.Close(false);
            }
            Marshal.ReleaseComObject(workbook);
        }
    }
    finally { Marshal.ReleaseComObject(workbooks); }
}
finally
{
    if (excelApplication != null)
    {
        //エクセルを閉じる
        excelApplication.Quit();
    }
    Marshal.ReleaseComObject(excelApplication);
}
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

var excelApplication = new Microsoft.Office.Interop.Excel.Application();
try
{
    Workbooks workbooks = excelApplication.Workbooks;
    try
    {
        Workbook workbook = workbooks.Open("d:\\Book1.xlsx");
        try
        {
            Sheets worksheets = workbook.Sheets;
            try
            {
                Worksheet worksheet = worksheets[1];
                try
                {
                    // 使用範囲を一括で二次元配列にコピー
                    Object[,] rangeArray;
                    Range usedRange = worksheet.UsedRange;
                    try
                    {
                        rangeArray = usedRange.Value;
                    }
                    finally { Marshal.ReleaseComObject(usedRange); }

                    // 二次元配列に対してループを回す
                    int lastRow = rangeArray.GetLength(0);
                    for (int i = 0; i < lastRow; i++)
                    {
                        Console.WriteLine(rangeArray[i, 0]);
                    }
                }
                finally { Marshal.ReleaseComObject(worksheet); }
            }
            finally { Marshal.ReleaseComObject(worksheets); }
        }
        finally
        {
            if (workbook != null)
            {
                workbook.Close(false);
            }
            Marshal.ReleaseComObject(workbook);
        }
    }
    finally { Marshal.ReleaseComObject(workbooks); }
}
finally
{
    if (excelApplication != null)
    {
        excelApplication.Quit();
    }
    Marshal.ReleaseComObject(excelApplication);
}

3. データベースへの入出力

入力

出力

4. エラーハンドリング



この記事が気に入ったらサポートをしてみませんか?