Экспорт в CSV не работает в мобильном карманном устройстве с использованием C # - PullRequest
0 голосов
/ 08 июня 2018

Я работаю с Mobile Handheld приложением устройства, используя c # , пытаюсь экспортировать данные в CSV-файл, но ни один из методов не работает для меня, Plateform Visual Studio 2008 и Приложение для смарт-устройств .* В приложении смарт-устройства не работает метод File.WriteALLText.

   private void btnsubmit_Click(object sender, EventArgs e)
    {
        TextWriter txt = new StreamWriter("logs.txt");

        try
        {
            if (!string.IsNullOrEmpty(txtOutput.Text) && !string.IsNullOrEmpty(txtqty.Text))
            {

                DataTable dt;
                dt = new DataTable();
                dt.Columns.Add("Barcode", System.Type.GetType("System.String"));
                dt.Columns.Add("Location", System.Type.GetType("System.String"));
                dt.Columns.Add("Quantity", System.Type.GetType("System.String"));
                DataRow dr = dt.NewRow();
                dr["Barcode"] = txtOutput.Text.Trim();
                dr["Location"] = "123";
                dr["Quantity"] = txtqty.Text.Trim();
                dt.Rows.Add(dr);                    
                StringBuilder data = ConvertDataTableToCsvFile(dt);
                SaveData(data, @"Data.csv");

                MessageBox.Show("Data exported Success");
            }
            else
            {
                MessageBox.Show("Please enter all value");
            }

            txt.Close();
        }
        catch (Exception ex)
        {
            string errmsg = ex.Message.ToString();

            MessageBox.Show("error " + errmsg);
        }
        txt.Close();
    }

    public StringBuilder ConvertDataTableToCsvFile(DataTable dtData)
    {
        StringBuilder data = new StringBuilder();


        for (int column = 0; column < dtData.Columns.Count; column++)
        {
            //Making sure that end of the line, shoould not have comma delimiter.
            if (column == dtData.Columns.Count - 1)
                data.Append(dtData.Columns[column].ColumnName.ToString().Replace(",", ";"));
            else
                data.Append(dtData.Columns[column].ColumnName.ToString().Replace(",", ";") + ',');
        }

        data.Append(Environment.NewLine);//New line after appending columns.

        for (int row = 0; row < dtData.Rows.Count; row++)
        {
            for (int column = 0; column < dtData.Columns.Count; column++)
            {

                if (column == dtData.Columns.Count - 1)
                    data.Append(dtData.Rows[row][column].ToString().Replace(",", ";"));
                else
                    data.Append(dtData.Rows[row][column].ToString().Replace(",", ";") + ',');
            }


            if (row != dtData.Rows.Count - 1)
                data.Append(Environment.NewLine);
        }
        return data;
    }
    public void SaveData(StringBuilder data, string filePath)
    {
        using (StreamWriter objWriter = new StreamWriter(filePath))
        {
            objWriter.WriteLine(data);
        }
    }

1 Ответ

0 голосов
/ 08 июня 2018

У меня была такая же проблема, много лет назад, когда я запускал портативное устройство с Windows Mobile на них.Вы должны добавить objWriter.Flush() в SaveData:

public void SaveData(StringBuilder data, string filePath)
    {
        using (StreamWriter objWriter = new StreamWriter(filePath))
        {
            objWriter.WriteLine(data);
            objWriter.Flush();
        }
    }
...