Чтение из файла CSV в метку в Xamarin.Forms - PullRequest
0 голосов
/ 05 августа 2020

Я прочитал руководство здесь , но я все еще не могу понять, как успешно прочитать строку из CSV, чтобы она появилась на этикетке. Я создал класс CsvFileReader, как предлагается в руководстве, но я не знаю, как использовать его для чтения строки из CSV и вставки ее на этикетку.

Label label = new Label
{
    // Text = the 5th column of the 1st row of 'my_file.csv'
    VerticalTextAlignment = TextAlignment.Center,
    HorizontalTextAlignment = TextAlignment.Center,
    FontSize = 25,
    TextColor = Color.Black,
    HeightRequest = 80
};

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать CsvHelper для чтения данных csv. Установите CsvHelper из пакета NuGet.

Создайте файл .csv и поместите его в проект Xamarin.Forms.

данные файла .csv: Я записал данные в excel и сохранить как файл .csv. В таблице данных Excel нет запятой.

ID,Name,Age
1,A,11
2,B,12
3,C,13
4,D,14
5,E,15

Установите действие сборки как Embedded resource.

введите описание изображения здесь

Создание структуры для файла .csv.

public class test
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Age { get; set; }
}

Чтение из файла .csv.

 private void Button_Clicked(object sender, EventArgs e)
    {
     
        var list = new List<test>();
        var assembly = Assembly.GetExecutingAssembly();
        var resourceName = "XamarinDemo.test.csv";

        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        using (StreamReader reader = new StreamReader(stream))
        {
            //string result = reader.ReadToEnd();

            if (reader != null)
            {
                using (var csv = new CsvReader(reader, CultureInfo.CurrentCulture))
                {
                    while (csv.Read())
                    {
                        list.Add(new test
                        {
                            ID = csv.GetField<string>(0),
                            Name = csv.GetField<string>(1),
                            Age = csv.GetField<string>(2)
                        });
                    }
                }
            }

        }
        label.Text = (list.ToArray())[5].ID;  //used to get the value of ID column,6th row(the row include the column[ID, Name, Age] row.).        

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...