2012-03-15 3 views
3

복잡한 계산을 수행하는 MS Excel 스프레드 시트가 있습니다. 스프레드 시트에서 얻은 결과로 CSV 파일을 만드는 스크립트를 만들고 싶습니다.코드에서 호출 된 계산 엔진으로 사용되는 Microsoft Excel 스프레드 시트

내 프로그래밍 언어 (예 : Ruby와 같은 스프레드 시트의 논리를 다시 작성할 수는 있지만 다른 언어를 사용할 수는 있지만)가 있으면 누군가가 스프레드 시트에서 논리를 변경할 때마다 코드를 업데이트해야합니다. . 코드에서 호출 할 수있는 연산 엔진 인 블랙 박스로 MS Excel 스프레드 시트를 사용할 수 있습니까? 그런 다음 CSV 부분을 작성하고 코드에 입력 데이터 다운로드 만하면 전체 계산 논리가 스프레드 시트에 남아있어 쉽게 업데이트 할 수 있습니다.

이상적으로 CSV 생성 또는 데이터 다운로드 코드를 도메인 전문가 (프로그래머가 아닌)가 사용하기 때문에 스프레드 시트에 추가하고 싶지 않습니다. 또한 인터넷에서 일부 데이터를 다운로드하여 스프레드 시트에 입력 값으로 전달해야합니다. Git과 같은 버전 제어 시스템에서 코드의 일부분을 외부에 보관하고 싶습니다. 한 가지 추가 메모는 스프레드 시트가 Solver Excel 플러그인을 사용한다는 것입니다.

어떻게 도와 드리면 매우 감사하겠습니다.

감사합니다, 마이클

+0

Excel에서 csv를 만들지 않으시겠습니까? – assylias

+0

다른 언어에서 Excel 통합 문서를 호출하려는 이유가 분명하지 않습니다. 내가 누락 된 것이 아니라면 사용자에게 일반적인 방법으로 통합 문서를 작동하게하고 BeforeClose 이벤트를 추가하여 CSV 파일을 출력하십시오. 당신이 VBA를 모르는 경우에 이것은 조금 어려울 것이나 나는 다른 선택보다는 어렵다고, 나는 믿는다. –

+0

토니, 계산을 주기적으로 실행해야합니다. 시스템에서 주기적으로 실행하는 예약 된 작업을 만들고 싶었습니다. 작업은 인터넷에서 일부 입력 데이터를 다운로드하여 스프레드 시트에 전달해야합니다. 나는 지금 질문을 업데이트 할 것이다. 감사합니다, Michal –

답변

2

루비를 사용하여 Excel 스프레드 시트를 조작하려면, 당신은 여기

win32ole 사용할 수 있습니다이 샘플 스크립트입니다 : 그냥

data = [["Hello", "World"]] 

# Require the WIN32OLE library 
require 'win32ole' 
# Create an instance of the Excel application object 
xl = WIN32OLE.new('Excel.Application') 
# Make Excel visible 
xl.Visible = 1 
# Add a new Workbook object 
wb = xl.Workbooks.Add 
# Get the first Worksheet 
ws = wb.Worksheets(1) 
# Set the name of the worksheet tab 
ws.Name = 'Sample Worksheet' 
# For each row in the data set 
data.each_with_index do |row, r| 
    # For each field in the row 
    row.each_with_index do |field, c| 
     # Write the data to the Worksheet 
     ws.Cells(r+1, c+1).Value = field.to_s 
    end 
end 
# Save the workbook 
wb.SaveAs('workbook.xls') 
# Close the workbook 
wb.Close 
# Quit Excel 
xl.Quit 

더 복잡한 코드를 해결하려면 원하는 매크로를 기록한 다음 매크로 코드를보고 VB에서 Ruby로 변환하십시오.

+0

이것은 유망합니다. OLE를 사용하여 Excel 추가 기능을 실행할 수 있는지 알고 있습니까? –

관련 문제