dotnet mauiで、CSVファイルの読み込みはできるのでしょうか?できるのなら、そのサンプルコード等を教えてください。

康二郎 井上 60 評価のポイント
2024-07-01T14:35:13.4733333+00:00

// CSVファイルの読み込みを行うクラス

public class CsvReader

{

private MainPage mainPage;

public CsvReader(MainPage page)

{

    mainPage = page;

}

public void ReadCsv()

{

    // CSVファイルのパスを取得

    var assembly = Assembly.GetExecutingAssembly();

    var resourceName = "MauiTouch2.Resources.Raw.Re_database_2.csv";

    using Stream? stream = assembly.GetManifestResourceStream(resourceName);

    if (stream == null)

    {

        Console.WriteLine("CSV file not found.");

        Debug.WriteLine("ssCSV file not found.sssssssssssssssssssssssss");

        return;

    }

    using StreamReader reader = new StreamReader(stream, Encoding.UTF8);

    string[] lines = reader.ReadToEnd().Split('\n');

    // データ行を処理

    for (int i = 0; i < lines.Length; i++)

    {

        Debug.WriteLine($"s{i}ss");

        if (string.IsNullOrWhiteSpace(lines[i])) {

            Debug.WriteLine("sssssssssssssssssssssssssss");

            continue; }// 空行をスキップ

        string[] data = lines[i].Trim().Split(',');

        mainPage.kifu_data[i] = data[0];

        Debug.WriteLine($"###################kifu_data[0]={mainPage.kifu_data[0]}");

        mainPage.comment_no[i] = data[3];

        mainPage.comment[i] = data[4];

    }

    mainPage.end_no = lines.Length - 1;     //end_dataは実データ。

    mainPage.kifu_data_main = mainPage.kifu_data[0];

}

}

C#
C#
C 言語ファミリをルーツとし、コンポーネント指向プログラミングのサポートを含む、オブジェクト指向およびタイプセーフのプログラミング言語。
30 件の質問
{count} 件の投票

承認済みの回答
  1. Raina Zhao - MSFT 2,850 評価のポイント Microsoft ベンダー
    2024-07-02T06:00:57.47+00:00

    康二郎 井上さん、こんにちは。

    Microsoft Q&A フォーラムにご投稿くださいましてありがとうございます。

    アセンブリからCSVファイルを読み込んでいることに気づいたのですが、CSVファイルをMAUIプロジェクトにドラッグしてみてください(既に存在する場合は、無視してください)。そして、CSVファイルの「Build Action」を「MauiAsset」に設定し、次のコードで読み込んでみてください。

    using var stream = await FileSystem.OpenAppPackageFileAsync("File.csv");

    using var reader = new StreamReader(stream);

    var contents = reader.ReadToEnd();

    Console.WriteLine(contents);

    また、提示されているコードでは「\n」を使用してデータをスプリットしているのですが、同様に、コンテンツも「\n」でスピリットすることができますね。

    さらに、何か問題がございましたら、詳細なエラーメッセージやご不明な点なども含めて、ご連絡のほどお願いします。

    どうぞよろしくお願いいたします。


    役に立った回答には「回答を受け入れる」と「いいね!」を押してください。さらに質問がある場合は、「コメント」を追加してください。注意:Q&Aからメール通知を受け取りたい場合には、ドキュメントの手順に基づき、メール通知を有効にしてください。

    1 人がこの回答が役に立ったと思いました。

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. 康二郎 井上 60 評価のポイント
    2024-07-06T01:17:32.4166667+00:00

    namespace CSVmaui

    {

    以下で、CSVファイルを埋め込み型にビルドしていますが、読み込めません。

    public partial class MainPage : ContentPage

    {
    
        int count = 0;
    
        public class CsvReader
    
        {
    
            string[] kifu_data = new string[300];
    
            string[] comment = new string[300];
    
            string[] comment_no = new string[300];
    
            private MainPage mainPage;
    
            public CsvReader(MainPage page)
    
            {
    
                mainPage = page;
    
                System.Diagnostics.Debug.WriteLine("CsvReader constructor called.");
    
            }
    
            public void ReadCsv()
    
            {
    
                System.Diagnostics.Debug.WriteLine("ReadCsv method called.");
    
                // CSVファイルのパスを取得
    
                var assembly = Assembly.GetExecutingAssembly();
    
                var resourceName = "CSVmaui.Resources.Raw.Re_database_2.csv";
    
                using Stream? stream = assembly.GetManifestResourceStream(resourceName);
    
                if (stream == null)
    
                {
    
                    System.Diagnostics.Debug.WriteLine("CSV file not found.");
    
                    System.Diagnostics.Trace.WriteLine("ssCSV file not found.sssssssssssssssssssssssss");
    
                    return;
    
                }
    
                using StreamReader reader = new StreamReader(stream, Encoding.UTF8);
    
                string[] lines = reader.ReadToEnd().Split('\n');
    
                System.Diagnostics.Debug.WriteLine($"Number of lines: {lines.Length}");
    
                // データ行を処理
    
                for (int i = 0; i < lines.Length; i++)
    
                {
    
                    System.Diagnostics.Debug.WriteLine($"Processing line {i}");
    
                    if (string.IsNullOrWhiteSpace(lines[i]))
    
                    {
    
                        System.Diagnostics.Debug.WriteLine("Skipping empty line.");
    
                        continue;
    
                    }// 空行をスキップ
    
                    string[] data = lines[i].Trim().Split(',');
    
                    kifu_data[i] = data[0];
    
                    System.Diagnostics.Debug.WriteLine($"kifu_data[{i}]={kifu_data[i]}");
    
                    comment_no[i] = data[3];
    
                    comment[i] = data[4];
    
                }
    
                //end_no = lines.Length - 1;     //end_dataは実データ。
    
                //mainPage.kifu_data_main = mainPage.kifu_data[0];
    
            }
    
        }
    
        public MainPage()
    
        {
    
            InitializeComponent();
    
            System.Diagnostics.Debug.WriteLine("MainPage constructor called.");
    
            var csvReader = new CsvReader(this);
    
            csvReader.ReadCsv();
    
           
    
        }
    
    0 件のコメント コメントはありません

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。