如何在csv的某个字段中打开包含特殊字符的csv文件?

时间:2018-02-07 21:21:12

标签: csv exception xamarin.forms

嗨我正在开发一个xamarin.forms应用程序,在尝试打开其中一个csv文件时,显示以下异常“输入字符串的格式不正确”csv文件包含一个名为item name的字段,其中包含以下名称 ET Door,E459-2,H 91 Ft Key,Door 所以这两个项目都包含逗号,因此我无法打开由这些组成的csv文件两个元素,因为它们包含特殊字符,如逗号和下划线。这是我的代码来读取和打开csv文件,请检查代码,让我知道我需要做什么更改,所以包含特殊字符的项目的文件也打开?

  public async void OnProcess(object o, EventArgs args)
    {

        if (!string.IsNullOrWhiteSpace(csv_file.Text))
        {
          //  _database.AddFiles();

            if (App.Current.MainPage is NavigationPage)
            {
                try
                {

                    List<ItemsCSV> items = new List<ItemsCSV>();
                    string[] lines = File.ReadAllLines(string.Format(@"{0}", this.file.FilePath));
                    if (lines != null)
                    {
                        for (int x = 1; x < lines.Length; x++)
                        {

                            string data = lines[x];


                            string[] item = data.Split(',');

                            //  ItemsCSV itemsCSV = new ItemsCSV();
                            _itemsCSV = new ItemsCSV();
                            {
                                _itemsCSV.Cycle_Count = string.IsNullOrEmpty(item.ElementAtOrDefault(0)) ? 0 : Convert.ToInt32(item[0]);
                                _itemsCSV.Line_Number = string.IsNullOrEmpty(item.ElementAtOrDefault(1)) ? 0 : Convert.ToInt32(item[1]);
                                _itemsCSV.Item_Number = item.ElementAtOrDefault(2);
                                _itemsCSV.Name = item.ElementAtOrDefault(3);
                                _itemsCSV.Warehouse = item.ElementAtOrDefault(4);
                                _itemsCSV.Aisle = item.ElementAtOrDefault(5);
                                _itemsCSV.Bin = item.ElementAtOrDefault(6);
                                _itemsCSV.Level = item.ElementAtOrDefault(7);
                                _itemsCSV.Order_Qty = string.IsNullOrEmpty(item.ElementAtOrDefault(8)) ? 0 : Convert.ToInt32(item[8]);
                                _itemsCSV.Order_UOM = item.ElementAtOrDefault(9);
                                _itemsCSV.Consumption_Qty = string.IsNullOrEmpty(item.ElementAtOrDefault(10)) ? 0 : Convert.ToInt32(item[10]);
                                _itemsCSV.Consumption_UOM = item.ElementAtOrDefault(11);
                                _itemsCSV.Status = "";

                            };
                            items.Add(_itemsCSV);
                            _database.AddItems(_itemsCSV);

                        }

                        var result = await DisplayAlert("", "CSV has been processed, please do cycle count", "OK", "Cancel");

                        if(result == true)
                        {
                            var cyclecountPage = new CycleCountPage(items, 0, "MainPage",this.file.FilePath);
                            await (App.Current.MainPage as NavigationPage).PushAsync(cyclecountPage);
                        }
                        else
                        {

                        }

                    }
                    else
                    {
                        await DisplayAlert("Alert", "File is empty", "OK");
                    }
                }
                catch (Exception e)
                {
                    await DisplayAlert("Exception", e.Message, "OK");
                }

            }
        }
        else
        {
            await DisplayAlert("Alert", "File name is mandatory", "OK");
        }
    }

0 个答案:

没有答案