We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now

x

Format and write a .net dataset to fixed length file format.

claghorn
claghorn asked
on
Medium Priority
484 Views
Last Modified: 2012-05-05
I have a result set in a C# console app. I want to write each row to a fixed length file. ie: each resultset element will take x amount of spaces that I define. How do you do this in C#?
Comment
Watch Question

first create an array of int with each int representing the length of each field in your fixed width field.

<pseudo-code>

int[] fieldLength = new int[]{5,10,25};
foreach (row in dataset){
    foreach(field in row){
        string s = field.ToString();
        s = s.PadRight(fieldLength[fieldnumber], ' '); // pads the string out to the specified length with spaces
        add s to your fixed width record
    }
    add fixed width record to fixed width file
}

</pseudo-code>

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
close, but it does not terminate each line in the resulting file. ie: the line continues infinitem. btw putting "\n" puts a space between each line and does not terminate each line either. Can you suggest the rest for a full soultion?
Top Expert 2006

Commented:
The string, "\r\n", should terminate the line.

Author

Commented:
Thanks, but no luck. It does not terminate the line. ie: if you cursor (right arrow) over the line it continues beyond.
Also, the lines are spaced now.
I always did get the return to next line when not specifying the "\r\n", but again, the line continues beyond the end.
The file does not behave like a main frame generated file that, when you cursor through it, it returns you to the next line.

Lines cannot possibly continue beyond the end.
The end is, by definition, the point beyond which the line does not continue.
The most likely explanation is that the lines does not end where you expect them to, i.e. you have padded the last field of the record out with spaces.
Did you have any luck with this ?

Author

Commented:
If I try to put a \r or \n, I get a space separating each line. This is unwanted. I want to be able to scroll through each line and where the data ends, find myself at the beginning of the next line.  
OK. Is it possible that you are creating the record adding a \n or a \r (or both) to the end of it and then using the WriteLine() method of some stream/file/text writer that is appending another \r\n to the end of the line ?

It would be useful if you showed your code but to be honest for a 20 point question you can't expect miracles.
The best you can hope for for 20 points is to be pointed in the right direction and if you are lucky some pseudo-code.
It's a bit much to then go and give a B grade because you can't get the linefeeds to work.

Commented:
Use System.Environment.NewLine, not "\r\n"
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.