Znak nowej linii w pliku CSV

Znak nowej linii w pliku CSV
przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

Witam,

Mam taki problem , generuje plik CSV do programu EasyUploader i tutaj pojawia się wałek , jedna z kolumn wymaga podawania parametrów po przez oddzielenie znakami nowej linii.
Kombinowałem z
enter_sign = string.Format("{0}", '\x0a');

oraz

string enter_sign = Environment.NewLine;

I kilka innych przypadków i problem polega na tym że w pliku po otwarciu zamiast kilku linii w jednej komórce zostają dodane kolejne rzędy.
Dowcip polega na tym że spreparowałem ten plik ręcznie gdzie parametry są oddzielone znakami nowej linii ale korzystałem z OpenOffice , kiedy otworzyłem plik w hexedytorze sprawdziłem jakie znaki są stosowane do wstawiania nowej linii i jest to \x0a ale kiedy mój program wstawia \x0a to są wstawiane nowe rzędy , w tym momencie już wale głową w ścianę.
Ktoś się orientuje co może być przyczyną takiego stanu rzeczy ? Jedyne co mi przychodzi do głowy to sytuacja w której open office zapamiętuje który plik wygenerował i wie że ma traktować znaki nowej linii jako nowe linie w jednej komórce a nie kolejne rzędy.

Za pomoc z góry dziękuję.


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
piusik
  • Rejestracja:ponad 9 lat
  • Ostatnio:6 miesięcy
  • Postów:32
0

string+#10#13;

edytowany 2x, ostatnio: piusik
0

Pokaż przykładowe pliki

przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

string+'#10#13' nic nie daje , mam po liniach BS i CR ale open office dalej widzi znak nowej linii jako tworzenie nowego rzędu.

Sprawdzałem w hexedytorze to co generuje mi apka jest identyczne z tym co generuje openoffice , z tą różnicą że moje nie działa a ich tak :/


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
edytowany 1x, ostatnio: przemek_l
piusik
  • Rejestracja:ponad 9 lat
  • Ostatnio:6 miesięcy
  • Postów:32
0

pomyliłem się i potem poprawilem ---musi być bez znakow ' '
string +#10#13 a wcześniej napisałem string +'#10#13';

a w czym piszesz?

kodowanie pliku ?

edytowany 4x, ostatnio: DibbyDum
przemek_l
zauważyłem :)
ŁF
Chyba Ci się C# z Delphi pomyliło.
przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

Kodowanie jest ok używam windowsowego w obu przypadkach :/.


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:dzień
0

Nowa linia pod Windows składa się z dwóch znaków - NL (inaczej LF - line feed, 10, \n) oraz CR (carriage return, 13, \r).
Zatem tekst, który ma być w osobnej linijce będzie kończyć się znakami \r\n.

string+'#10#13' to chyba żart - przecież char (pojedyncze apostrofy) przyjmuje tylko jeden znak, a #10#13 to znaków sześć. Poza tym w Delphi i TP to nie #10#13, tylko #13#10 (kolejność ma znaczenie!).


edytowany 1x, ostatnio: ŁF
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 16 godzin
0

Ale dlaczego piszecie o #13#10, skoro autor mówi o C#, czyli o jakisString = jakisString + "\r\n"?

0

Po prostu wrzuć 2 przykładowe pliki. Jeden z OpenOffice a drugi z twojego programu. Wtedy zamiast zgadywać będziemy mogli je spokojnie porównać.

0

Ok, muszę się dowiedzieć czy mogę :) , jak by nie patrzeć plik wynikowy jest klauzulą poufności chroniony ;).

0

Wrzuć spreparowany plik. Bez poufnych/autentycznych danych, byleby występował ten błąd.

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

czemu do obslugi CSV piszecie cos wlasnego?

https://www.nuget.org/packages/CsvHelper/

przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

Nie tyle własnego co jest oparte na jakimś kodzie który działa idealnie tak długo jak długo nie pojawia się enter w konkretnej komórce.


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

Tutaj plik przykładowy ze znakami nowej linii windowsa, rozwala się wszystko.
Te kilka rzędów gdzie jest liczba średnica etc powinny być jedną komórką ( B bo daj że ) zamiast tego wszystko się rozwala.
Jeśli preparuje plik ręcznie w OpenOffice to entery nie stają się osobnymi rzędami ( uprzedzając , plik wtedy jest plikiem CSV , zamykam go i otwieram bez problemu ).
Plik wynikowy w założeniu ma być dla programu easyuploader v3.


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
przemek_l
Otwierałem oba pliki hexedytorem i nie ma tam żadnej różnicy
ŁF
bo daj że??? Oczy mi pękły
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

no to znaczy ze dziala teraz zle.

Nadal sam skorzystalbym z CSVHelpera. Napisalbym dla tej kolumny odpowiednie mapowanie i... tyle

Roboty masz na godzine jezeli nie znasz tej libki, a Ty juz od wczoraj walczysz z tym

Szanuj swoj czas ;)

przemek_l
  • Rejestracja:prawie 13 lat
  • Ostatnio:7 miesięcy
  • Postów:94
0

Problem rozwiązany , używałem złej funkcji zapisu , tylko zagadką jest dla mnie że plik wynikowy w tej chwili w hex edytorze wygląda tak samo jak poprzednio O_O z tą różnica że nagle open office sobie z nim radzi prawidłowo.
Nic już z tego nie rozumiem ....


"Jeżeli chcesz odkryć coś ważnego, pracuj tylko nad pytaniami, z których można wyprowadzić przewidywania eksperymentalne." Richard Feynman
I2
Może porównując dwa razy ten sam plik otwarłeś. ;)
przemek_l
nope, 2 różne ...
1

@przemek_l Ale pliki nie są takie same tylko podobne. Sprawdziłem plik, który wrzuciłeś. Jeżeli w polu używasz znaku nowej linii, cudzysłowu lub separatora pól (w twoim przypadku średnik), to całą wartość musisz wziąć w cudzysłów (każdy cudzysłów musisz dodatkowo zamienić na dwa cudzysłowy), a ty tego nie robisz.
Jeżeli to

Kopiuj
Stan | Nowy
Liczba felg w ofercie | 4 szt.
Średnica felgi | �rednica"
Szerokość felgi |Szerokosc"
Rozstaw śrub |Rozstaw #1
Producent Felg |Producent
Odsadzenie |ET
Otwór centralny | wybierz
Typ samochodu | Samochody osobowe 
Marka samochodu | auta

miało być w jednej komórce to powinno wyglądać tak:

Kopiuj
"Stan | Nowy
Liczba felg w ofercie | 4 szt.
Średnica felgi | �rednica""
Szerokość felgi |Szerokosc""
Rozstaw śrub |Rozstaw #1
Producent Felg |Producent
Odsadzenie |ET
Otwór centralny | wybierz
Typ samochodu | Samochody osobowe 
Marka samochodu | auta"

Dodatkow w niektórych miejscach zamiast ś jest ten znak

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)