excel에서 csv로 다운로드

1504 단어
관리 백그라운드는 통상적으로 excel 다운로드와 관련된다. 회사가 최근에 재구성 프로젝트가 세 개의 작은 프로젝트로 바뀌었고 데이터베이스도 3개로 나뉘기 때문에 관리 백그라운드에 다운로드 압력을 증가시켰다.사용자 목록에서 데이터베이스 조작은 테이블 조회와 크로스 라이브러리 조회와 관련된다. 수천 개의 데이터는 데이터 처리가 너무 길어서 504로 되돌아오기 쉽다.그래서 오늘부터 최적화를 시작했다. 최적화는 세 단계로 나눌 예정이다. 첫째, excel을 csv로 바꾸어 다운로드한다. 왜냐하면 csv는 형식적으로 말하면 한 그룹의 append 데이터이기 때문에 형식 전환에 있어서 연산량을 낭비할 필요가 없다.2. 연표 조회를 최적화하면 색인을 추가하여 최적화할 수 있다.3. 연산 시간이 너무 길기 때문에 이메일로 결과를 보낼 계획입니다.
  • excel에서 csv로 다운로드
  • const stringify = require('csv-stringify')
    const Promise = require('bluebird')
    const _ = require('lodash')
    const iconv = require('iconv-lite')
    
    class ExcelUtil {
      static async genCsv (array, columns, request) {
        if (_.isEmpty(array) || _.isEmpty(columns)) throw new AppError(' ')
        return await new Promise(function (resolve, reject) {
          stringify(array, { header: true, columns: columns, delimiter: ',' }, function (err, data) {
            if (err) {
              return reject(err)
            }
            const userAgent = request && request.header && request.header['user-agent']
            if (userAgent && userAgent.match(/windows/i)) {
              data = iconv.encode(data, 'gbk')
            }
            resolve(data)
          })
        })
      }
    }
    
    module.exports = ExcelUtil
    

    그중에 구덩이가 하나 생겼는데 linux가 정상적으로 열리고 윈도우즈가 디코딩을 합니다. 저는 인코딩 문제로 추측했습니다. 동료에게 물어봤더니 윈도우즈는gbk 문자 집합을 사용하여request의user-agent를 통해 윈도우즈 시스템 여부를 판단할 수 있다고 했습니다.
  • 후속적으로 계속 최적화될 것이다
  • 좋은 웹페이지 즐겨찾기