2014-12-05 2 views
5

으로 정의하십시오. 최종 제품은 열이 250 개 이상인 Excel CSV 스프레드 시트입니다. R에서 Excel의 열 너비를 결정하는 방법이 있는지 궁금합니다.Excel의 열 너비를 R

필자는 write.csv2를 사용하고 있는데, 이는 excel에서 열 폭을 모두 8,43으로 생성합니다.

write.csv2 (DF는 ","파일 = "Final.csv"= NA)

는 가능하면 나는 한 번에 또는 특정 사람을 그들 모두를 변화하는 트릭 찾고 있어요 . 내 유일한 옵션은 running VBA from R입니까?

도움 주셔서 감사합니다.

+0

내가 R-에 엑셀 패키지 중 적어도 하나는 열 수준 서식 옵션이 XLSX 스프레드 시트를 구축 할 것이라고 확신 . –

+2

질문에 개념적인 문제가 있습니다. 정의에 따라'* .csv' 파일을 저장하면 모든 포맷 정보가 삭제됩니다. 따라서 Excel에서 이러한 파일을 열면 Excel의 기본 열 너비가 나타납니다. 형식을 지정하려면'* .xls' 또는'* .xlsx'로 저장해야합니다. – jlhoward

+0

받아 들인 대답에서 언급 한'xlsx' 패키지와는 달리,'openxlsx' 패키지를 사용할 수 있습니다. 'rJava'에 의존하지 않기 때문에이 방법을 선호합니다. –

답변

13

xlsx을 확인하십시오. 나는 그것을 엑셀 파일과 꽤 좋은 생성을 위해 사용하고있다. 당신을 도울 수있는 방법 setColumnWidth가 있습니다. xlsx 패키지 기능에 대한 자세한 예제는 here을 확인하십시오.


여기에 패키지 xlsx을 사용한 작업 예제가 있습니다.

df <- data.frame(matrix(rnorm(100),nc=10)) 
library(xlsx) 
# must save as an xls or xlsx file... 
write.xlsx(df,"Final.xlsx", row.names=FALSE) 
# load it back 
wb <- loadWorkbook("Final.xlsx") 
sheets <- getSheets(wb) 
# set widths to 20 
setColumnWidth(sheets[[1]], colIndex=1:ncol(df), colWidth=20) 
saveWorkbook(wb,"Final.xlsx") 
# autosize column widths 
autoSizeColumn(sheets[[1]], colIndex=1:ncol(df)) 
saveWorkbook(wb,"Final.xlsx") 
+1

위 코드는 방금 추가 한 데이터 프레임에 따라 단일 시트를 자동 크기 지정하지만 위의 기능을 사용하여 가져온 모든 시트를 자동으로 크기를 조정할 수있는 방법은 무엇입니까? –

1

허용되는 대답에 대한 약간의 개선 : 파일을 읽고 읽고 수정하는 것은 그리 우아하지 않습니다. 또한 xls 파일을 saveWorkbook으로 덮어 쓰면 "손상된"파일로 이어질 수 있습니다. 즉, Excel에서 열면 파일을 복구해야합니다. 다음과 같이

이를 방지하기 위해, 하나는 진행할 수 :

df <- data.frame(matrix(rnorm(100), nc=10)) 
library(xlsx) 
wb <- createWorkbook(type = "xlsx") 
sheet <- createSheet(wb, sheetName = "rnormdata") 
addDataFrame(df, sheet, row.names = FALSE) 
setColumnWidth(sheet, colIndex = 1:3, colWidth = 20) 
autoSizeColumn(sheet, colIndex = 4:ncol(df)) 
saveWorkbook(wb, "Final.xlsx")