2017-09-13 14 views
1

지금 나는 작동중인 팬더를 사용하여 엑셀 시트를 하나의 새로운 시트에 결합하려고합니다. 유일한 문제는 새 Excel 시트 안의 값이 수식 대신 일반 숫자이며 수식이 필요하다는 것입니다.파이썬을 사용하는 값 ​​대신 셀의 Excel 수식을 복사 할 수 있습니까?

로드 파일

directory = os.path.dirname(__file__) 
fname = os.path.join(directory, "Reisanalyze.xlsm") 
print("Loading %s..." % fname) 
sheet1 = pd.read_excel(fname, sheetname="Input") 
sheet2 = pd.read_excel(fname, sheetname="Alternatieven") 

쓰기 시트 새에

writer = pd.ExcelWriter('first_sheet.xlsx', engine='xlsxwriter')`** 
sheet1.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=0) 
    sheet2.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=21) 

편집 : 나는 원래 내가 여러로드 필요할 때까지 근무 pycel 프로젝트를 사용하려고 내가 효과적이지 않은 시트는 왜 여러 시트를 작성하기 위해 팬더를 사용합니까? nto 1 장.

+0

액세스를 수행하는 최소한의 특정 코드와 배경 정보를 게시하십시오. –

+1

openpyxl 모듈을 사용하기로 선택한 경우 파일을 열 때 수식 또는 파일에서 계산 된 마지막 값을로드 할 수 있습니다. 기본 모드에서 파일을 열면이 플래그가 False로 설정되므로 수식에 액세스 할 수 있습니다. 출처 : http://openpyxl.readthedocs.io/ko/default/usage.html – BoboDarph

답변

2

OpenPyXL을 사용할 수 있습니다. 읽기 here

테스트 엑셀되어 다음 파일, 테스트 코드

from openpyxl import load_workbook 
import pandas as pd 
wb = load_workbook(filename = 'testexl.xlsx') 
sheet_names = wb.get_sheet_names() 
name = sheet_names[0] 
sheet_ranges = wb[name] 
df = pd.DataFrame(sheet_ranges.values) 
print df 

출력

0   1 
0 =SUM(B1:B2) 1 
1 None  2 
+0

감사! 이것은 효과가 있었다. –

1

당신은 엑셀 수식을 유지하려면 되어 다음

A  | B 
---------- | ------ 
=SUM(B1:B2)| 1 
      | 2 

을 testexl.xlsx 그런 다음 수식을 중지하고 나중에 다시 변환해야합니다. 변환하기 전에, 키보드에서 control/command + F를 누르면 화면 중간에 메뉴가 나타나서 바꾸기 탭을 클릭해야합니다.

"찾을 내용 :"상자 유형 "="및 "다음으로 바꾸기 :"상자 유형 ". ="에서. 그런 다음 모두 교체하십시오. 그러면 수식이 텍스트로 바뀌어 복사 할 수 있습니다.

는 CSV 파일로

주를 저장 :이 또한 화학식의 내부에 = 기호를 대체 할 것이라는 점을 알고있다. 그건 중요하지 않아. 갈거야.

병합 후 다시 Excel에서 열고 반복하지만 수식으로 다시 변환하려면 역순으로여십시오.

추가 모듈을 가져 오는 것보다 쉽습니다.

+1

이 작업을 수행하고 싶지 않은 이유는 Excel에서 수식/셀을 수동으로 변경하고 싶지 않기 때문입니다. 파이썬으로 바꾸고 싶습니다. 그래도 입력 주셔서 감사합니다. –