Comments (7)
Hmm... I think I would create a new parser for this. Parsing will be completely different. Writing will also be different, so I may have to abstract some of the writing stuff out too.
from csvhelper.
@roryprimrose I think you'd be better off going with something like FileHelpers for fixed width file parsing. It already supports fixed width files pretty well.
from csvhelper.
I think there would be too many things that need to be added here for this to work properly. There would need to be a FixedWidthParser written. The property configurations would need at least the width set on them. This will muddy up the api. I think creating a whole new library that works with fixed width files is a better idea.
If that does happen and there is enough overlap in the reader and writer (i.e. auto class generation), maybe something could be abstracted out to be used in both libraries.
Right now this is not something I'm going to pursue.
from csvhelper.
I'm thinking I may add this to version 3.0.
from csvhelper.
@JoshClose I'm add ability of writing fixed-length fields, implementation now https://github.com/dmitry-azaraev/CsvHelper/tree/feature/writing-fixed-length-records .
It is actually do next things:
- Allow use empty delimeter. (Alternatively it is enough to make own CsvSerializer and do not emit delimeters).
- (Not directly related): Constants uses type converters. Current versions falls on Map().Constant(123). I'm fix it to always invoke type converters even for constants.
- Allow configure CsvPropertyMap Width, Align and AlignErrorMode for writing fixed-length fields.
- Added some tests about using width, align and error mode.
Basic idea of usage is:
// configure
configuration.Delimiter = "";
configuration.QuoteNoFields = true;
configuration.HasHeaderRecord = false;
// in map, define mappings
Map(m => m.Id).Width(5);
// or
Map(m => m.Id).Width(5, CsvAlign.Right); // will pad spaces from left
// or
Map(m => m.Id).Width(5, CsvAlign.Right, CsvAlignErrorMode.Throw); // will throw if field is not fit in space
Even while it is only supports writing, i'm found that it is simpler keep using one CsvHelper because when i'm write files, i'm use same fluent mapping syntax, reuse formats / etc. Do you like something like this?
And can i'm (we) count to have similar functionality in nearest future. I.e. what i'm should do to have PR been accepted?
from csvhelper.
This issue was moved to CsvHelperContrib/CsvHelperContrib#2
from csvhelper.
+1
from csvhelper.
Related Issues (20)
- Add ability to read empty string as 0 (or other default value) for non-nullable types
- Skip rows from csv file arbitrary rows HOT 4
- CsvDataReader - cant read with columnName when using custom SchemaTable HOT 3
- CountBytes does not correctly count bytes when IgnoreBlankLines is enabled. HOT 1
- Incorrect array length determination in ByteArrayConverter.HexStringToByteArray
- Build error - HOT 3
- New compatibility issue regression due to `System.Linq.Async` inclusion HOT 5
- Microsoft.Bcl.AsyncInterfaces dependency error on System.Threading.Tasks.Extensions HOT 4
- ConfigurationException: 'Types that inherit IEnumerable cannot be auto mapped' when using custom class based on DynamicObject (NOT ExpandoObject) which also implements IDictionary HOT 3
- Missing "Product Version" in CsvHelper.dll HOT 1
- Column Name not displaying Using Mapping HOT 1
- Just thrown new exception by choice.
- Unexpected `InvalidCastException` in `TypeConverter<>` with nullable structs and value types HOT 2
- List<T>.ToAsyncEnumerable not accessible anymore after upgrade to CSVHelper 31.0.2 (.NET 8) HOT 5
- Set Custom Headers that derives from the property value. HOT 7
- Eliminate the columns if empty HOT 1
- Unregister ClassMap does not clear the previous maps if the same class is used HOT 2
- Getting problems with release build of my app using COM HOT 1
- add my report list columns' name as a header to the csv file when the HasHeaderRecord is set to false
- When Query from db and return IEnumable, will execute 2 times for sql query HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from csvhelper.