헤더가 첫 번째 줄에서 시작하지 않는 csv 파일을 가져오는 방법이 있습니다. 헤더가 있는 줄을 지정하기만 하면 됩니다.
하지만 데이터 테이블로 작업을 수행한 후 동일한 형식으로 다시 내보내려면 어떻게 해야 합니까? 내가 텍스트를 가지고 있고 그것은 단지 한 줄이라고 가정해 봅시다.
Excel의 이 CSV는 다음과 같습니다.

메모장에서는 다음과 같이 표시됩니다.

순전히 JSL에서 그렇게 할 수 있는 깨끗한 방법이 있습니까?
내가 현재 이것을 시도하는 방법 :
내가하고있는 CSV 파일 읽기의 반대 작업은 CSV를 텍스트 파일로 읽어서 전- , 내 헤더가 시작되는 위치를 파악하고(다른 위치에서 시작할 수 있음) 줄 번호를 다음과 같이 가져옵니다. headersLocation , 그런 다음 다음을 수행합니다.
dtInt_ = Open(
Char To Blob( ex ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( headersLocation ),
Data Starts( headersLocation + 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
),
Invisible
);따라서 현재 계획은 처리된 데이터 테이블을 어떻게든 BLOB로 가져온 다음 반대의 Blob To Char() 함수를 수행하고 일부 텍스트를 앞에 추가하고 CSV 파일로 저장하는 것입니다.
나는 데이터 테이블을 Blob으로 가져와서 Char로 가져오거나(올바른 방법이 아닐 수도 있음) 어떻게든 데이터 테이블을 텍스트로 CSV 형식으로 가져올 수 있습니다(파일로 저장하지 않음).
또는 CSV 파일에 저장한 다음 해당 파일을 다시 텍스트로 읽고 앞에 줄을 추가하고 다시 저장할 수 있습니다(임시 CSV 파일 삭제). 하지만 이렇게 하는 것은 매우 어색한 방법인 것 같습니다.
감사해요,
중.
좋아, 지금은 다음과 같이 해결했습니다.
dt = Current Data Table();
filePath = "C:\TEMP\test.csv";
dt << Save(filePath);
dt_text = Load Text File(filePath);
out = "Custom Line \!n"||dt_text;
Save Text File(filePath, out, mode("Replace"));파일을 두 번 저장하지 않고 더 깨끗한 방법이 있습니까? (그 자체가 꽤 큰 여러 파일에 대한 것이라고 가정해 보겠습니다. 따라서 추가 저장 작업이 중요합니다.)
다음을 사용하여 전체 csv 파일을 텍스트 문자열로 읽어보고 싶을 수 있습니다.
텍스트 파일 로드()
그런 다음 원하는 정보에 대해 문자열 변수를 구문 분석할 수 있습니다.
텍스트 파일 저장()
그런 다음 파일을 하드 드라이브에 다시 쓰는 데 사용할 수 있습니다.
짐,
이것이 바로 제가 현재 솔루션에서 하고 있는 일입니다. 위를 참조하십시오.
문제는 일부 데이터 조작도 수행해야 하므로 데이터 테이블로도 로드해야 한다는 것입니다.
문제는 데이터 테이블을 텍스트(CSV 형식)로 가져오는 방법입니다... CSV로 저장한 다음 문자열을 삽입하기 위해 텍스트로 다시 로드할 수만 있었습니다. 이것은 내가 바라는 것보다 하나의 Save\Load 사이클입니다. 여러 개의 큰 파일이 있을 때 비용이 많이 듭니다.
귀하가 지정한 접근 방식이 가장 효율적이라고 생각합니다.