C#SQL表到文本文件的输出格式

时间:2014-08-06 14:21:29

标签: c# sql

我遇到了一些问题。我的一个字段{4}具有可变长度的字符。但是,它在文件中的结束位置必须是行{3}末尾的23个字符。所以我需要添加更多的空格,等于行{4}的23个字符。正如你所看到的,我用for循环尝试了这个。不幸的是它不起作用。我不确定它是否是我使用的方法,或者是问题的语法。

      if ((checkResp91 != null) || (checkResp00 != null))
            {
                string selectCommandText91 = "SELECT * FROM EFT_BANK_INFORMATION1";
                using (SqlDataAdapter adapter91 = new SqlDataAdapter(selectCommandText91, connection))
                {
                    using (DataTable table91 = new DataTable("EFT_BANK_INFORMATION1"))
                    {
                        adapter91.Fill(table91);
                        System.Text.StringBuilder commaDelimitedText = new System.Text.StringBuilder();
                        //commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row
                        foreach (DataRow row in table91.Rows)
                        {
                            string spaceholder = "";
                            string spacer = row[4].ToString();
                            int countit = spacer.Length;
                            for (int i = countit; i < 23; i++)
                            {
                                spaceholder = spaceholder + " ";
                            }

                            string value = string.Format("{0}{1}                {0}         {2}{3}{4}{spaceholder}{5}", row[1], row[2], row[3], row[4], spaceholder, row[5], row[6]); // how you format is up to you (spaces, tabs, delimiter, etc)
                            commaDelimitedText.AppendLine(value);
                        }
                        System.IO.File.WriteAllText("C:\\BillingExport\\tbl9_1_export.txt", commaDelimitedText.ToString());
                    }
                }
            }

已更改为

   //commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row
                        foreach (DataRow row in table91.Rows)
                        {
                            string spacer = row[4].ToString();
                            string newvalue = (spacer + new string(' ', 23)).Substring(0, 23);
                            string value = string.Format("{0}{1}                {0}         {2}{3}{4}{5}", row[1], row[2], row[3], newvalue, row[5], row[6]); // how you format is up to you (spaces, tabs, delimiter, etc)
                            commaDelimitedText.AppendLine(value);
                        }
                        System.IO.File.WriteAllText("C:\\BillingExport\\tbl9_1_export.txt", commaDelimitedText.ToString());
                    }
                }

由于某种原因,这给了我额外的空间,并且在我需要之后将它们放在角色之前。

以上代码的输出:

09                  09         011301390011111119              AAAAAAA AAAABBBBBBBB BBBBBBBBB CO.

何时需要

09                  09         011301390011111119AAAAAAA AAAA           BBBBBBBB BBBBBBBBB CO.

1 个答案:

答案 0 :(得分:1)

尝试重新发明Fortran记录文件呃?

只需在string.Format()中使用参数长度:

string.Format("{0}{1}                {0}         {2}{3}{4,23}{5}", row[1], row[2], row[3], row[4], row[5], row[6]);

我也用它来摆脱那些空间,但取决于你。