0

我正在使用c#使用移动手持设备应用程序,尝试将数据表导出到 csv 文件,但没有一种方法对我有用,Plateform Visual Studio 2008Smart Device Application。 方法在智能设备应用程序中不起作用。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);
        }
    }
4

1 回答 1

0

几年前,当我开始使用装有 Windows 移动设备的手持设备时,我也遇到了同样的问题。您应该添加objWriter.Flush()SaveData:

public void SaveData(StringBuilder data, string filePath)
    {
        using (StreamWriter objWriter = new StreamWriter(filePath))
        {
            objWriter.WriteLine(data);
            objWriter.Flush();
        }
    }
于 2018-06-08T10:19:35.677 回答