使用c#写入csv文件会导致格式无效

时间:2015-07-15 09:15:40

标签: c# sql .net oracle

我使用C#执行oracle sql查询并从中获取数据库之后,我需要将来自数据库的所有数据写入excel文件。我用以下代码计算出来:

private static DataTable GetQueryResult(string query, Dictionary<string, string> parameterValues)
    {
        Oracle.ManagedDataAccess.Client.OracleConnection con = new OracleConnection(ReadConnectionString());
        OracleCommand cmd = new OracleCommand(query);
        cmd.Connection = con;
        if (parameterValues != null && parameterValues.Count > 0) {
            foreach (var item in parameterValues)
            {
                cmd.Parameters.Add(item.Key, item.Value);
            }
        }
        Oracle.ManagedDataAccess.Client.OracleDataAdapter adp = new OracleDataAdapter(cmd);

        DataTable tbl = new DataTable();
        con.Open();
        try
        {
            adp.Fill(tbl);
        }
        catch (Exception ex)
        {

            throw;
        }
        finally
        {

            con.Close();

        }
        return tbl;
    }

我使用数据表来保存值。

DataTable queryResultTable = GetQueryResult(query, parameterValues);
        if (queryResultTable != null && queryResultTable.Rows.Count > 0)
        {
            string strHeader = GetResultHeader(queryResultTable);
            StringBuilder sb = new StringBuilder();
            sb.Append(strHeader);
            SetResultRows(sb, queryResultTable);
            SaveFileDialog fg = new SaveFileDialog();
            fg.Filter = "CSV|*.csv";
            fg.Title = "Kaydedilecek dosyayi belirleyin";
            DialogResult dg = fg.ShowDialog();
            if (dg == DialogResult.OK)
            {

                File.WriteAllText(fg.FileName, sb.ToString(), Encoding.GetEncoding("windows-1254"));
            }
            if (dg == DialogResult.Cancel)
            {
                System.Environment.Exit(1);
            }

这是我如何将值写入csv文件的代码。但有时一列中的值看起来像“2,01E + 13”这样的无效数字,但它应该是“20130405134559”。 我的问题是如何阻止这种情况,或者我是否有办法格式化某些特定的列。

1 个答案:

答案 0 :(得分:0)

这个数字是有效的,它只是指数形式。您需要查看SetResultRows调用中/周围的字符串格式选项。