我使用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”。 我的问题是如何阻止这种情况,或者我是否有办法格式化某些特定的列。
答案 0 :(得分:0)
这个数字是有效的,它只是指数形式。您需要查看SetResultRows调用中/周围的字符串格式选项。