• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 수집 · 처리

  • 해결 여부

    미해결

Error: invalid column -1

22.12.28 17:44 작성 조회수 113

0

도저히 어떤 부분이 틀린지 모르겠어서 질문 남깁니다.. 이 부분은 깃헙에 없는건가요??

 

C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095

function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) +

s; return s; }

^

Error: invalid column -1

at encode_col (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095:46)

at write_ws_xml_data (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:14999:52)

at write_ws_xml (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:15077:11)

at write_zip_xlsx (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23532:25)

at write_zip (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23326:9)

at write_zip_type (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23753:10)

at writeSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23891:22)

at Object.writeFileSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23914:9)

at crawler (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\index.js:76:8)

at processTicksAndRejections (node:internal/process/task_queues:96:5)

C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture>

답변 1

답변을 작성해보세요.

0

조현영님의 프로필

조현영

지공자

22.12.28 18:39

add_to_sheet 안에 넣는 인수들을 전부 다 콘솔로그 찍어보세요

한승보님의 프로필

한승보

질문자

22.12.29 09:24

콘솔은 다 찍힙니다!

xlsx.writeFile(workbook, 'xlsx/result.xlsx');

이거를 주석하면 에러가 안 뜨는데 쓰면 뜨네요..

조현영님의 프로필

조현영

지공자

22.12.29 10:00

콘솔로그 찍은 것중에 -1이 들어간 건 없었나요?

한승보님의 프로필

한승보

질문자

22.12.29 10:32

const xlsx = require('xlsx'); 
const workbook = xlsx.readFile('xlsx/data.xlsx');
const ws = workbook.Sheets.영화목록;
const records = xlsx.utils.sheet_to_json(ws);
const axios = require('axios')//ajax라이브러리 - html을 응답받음
const cheerio = require('cheerio');//html 파싱 - html -> ks
const add_to_sheet = require('./add_to_sheet');

const crawler = async () => { //순서 보장 - 대신 속도 느림
  add_to_sheet(ws, 'c1', 's', '평점')
  for(const [i, r] of records.entries()){
    const response = await axios.get(r.링크);
    if(response.status === 200) { //응답이 성공한 경우
      const html = response.data;
      //console.log(html);//html 을 다 받는다.
      const $ = cheerio.load(html); //cheerio로 로딩 - $통해 태그들에 접근가능 //원하는 것을 가져오는 부분
      const text = $('.score.score_left .star_score').text(); //jqeury가능
      //console.log(r.제목, '평점', text.trim());
      const newCell = 'C' + (i + 1)
      console.log(ws)
      console.log(newCell)
      console.log(ws)
      console.log(text.trim())
      add_to_sheet(ws, newCell, 'n', parseFloat(text.trim()))
    }
  }
  xlsx.writeFile(workbook, 'xlsx/result.xlsx');
}
crawler();

 

네 코드는 이게 전부입니다..

콘솔에는

이런식으로만 뜨고 있습니다

이렇게 반복문 다 돌고 writeFile쪽 만나면 에러가 뜨네요

조현영님의 프로필

조현영

지공자

22.12.29 10:38

npm i node-xlsx@0.14 해서 강좌 버전과 동일하게 설치해보세요.

한승보님의 프로필

한승보

질문자

22.12.29 10:41

버전을 똑같이 하니까 되네요...! 앞자리가 같은 0이라서 안해도 되는 줄 알았습니다 ㅠ 감사합니다 근데 앞자리가 같아도 안되는 경우가 많은가요?

조현영님의 프로필

조현영

지공자

22.12.29 10:51

첫 자리가 0인 경우는 앞에 0이 무시됩니다. 즉 14버전에서 21버전으로 버전이 올라간 겁니다.

한승보님의 프로필

한승보

질문자

22.12.29 13:13

헉.. 감사합니다!!