2016-08-24 7 views
0

Excel出力の出力を調整することは可能ですか? 私は緊急性を下げる際に以下のことをしたいと思います。ボタン拡張のExcelエクスポートの出力をカスタマイズする

  1. いくつかのテキストを含む表にヘッダを追加する列名に厚い底部の境界線を追加「このテーブルは、虹彩データセットに基づいて、最小などの入力$幅使用される」
  2. 追加ヘッダ最初の列の後の左境界
  3. 空の行をヘッダの上に追加する
  4. ここでは、いくつかのマージされたセルに書き込むことができました。つまり、長さ、幅の4つの列の上に「花弁のサイズ」を書きます。 ..

MWEはボタン拡張を使用しています。私は、元javascrtip DT hereのためのいくつかの情報を見つけましたが、私はR.

rm(list=ls()) 
    library(shiny) 
    library(datasets) 
    library(DT) 
    library(data.table) 
    DT<-data.table(iris) 
    server<-shinyServer(function(input, output) { 
     output$view <- DT::renderDataTable(
     DT[Sepal.Width<=input$width,.SD],extensions = c('FixedHeader','Buttons'), 
      options=list(pageLength=60,fixedHeader = TRUE,dom = 'Bfrtip',buttons = c('csv', 'excel' ))) 
    }) 

    ui<-shinyUI(fluidPage(
     titlePanel("Shiny MWE"), 
     sidebarLayout(
      sidebarPanel(
      sliderInput("width", label = h3("Min width"), 
         min=min(DT$Sepal.Width), max=max(DT$Sepal.Width), value=mean(DT$Sepal.Width), 
         )), 

     mainPanel(
      DT::dataTableOutput("view") 
     ) 
    ) 
    )) 

    runApp(list(ui=ui,server=server)) 
+0

rライブラリ(xlsxなど)の1つを使用してdownloadbuttonを作成し、xlsxに書き込むことができます。 – Batanichek

答えて

1

私も、私はのように他の理由のために、「ボタン」の拡張子を放棄しなければならなかったことに気づいへ転送するために、それは少し硬すぎますよくたとえば、ダウンロードボタンをExcelは、データセット全体ではなく、アプリケーション上のビューのみをエクスポートします。 (これは、オプションのサーバー= FALSEで固定できますが、大きなデータセットの場合は遅すぎます)

Rtoolsをインストールする必要があるopenxlsxパッケージを選択しました。 Windowsパスに追加し([Error: zipping up workbook failed when trying to write.xlsx

だから私の投稿のコードはほとんど私が望んでいたり、私がopenxlsxコマンドを使用し続けることができます。私も悩みのインストールを持っていたXLSXパッケージまたは他者との選択肢があります。

rm(list=ls()) 
    library(shiny) 
    library(datasets) 
    library(DT) 
    library(data.table) 
    library(openxlsx) 

    DT<-data.table(iris) 
    # Style created for openxlsx see help 
    hs <- createStyle(textDecoration = "BOLD", fontColour = "#FFFFFF", fontSize=12, 
    fgFill = "#177B57",border="Bottom",borderStyle=c("thick")) 
    #Server 
    server<-shinyServer(function(input, output) { 
     output$view <- DT::renderDataTable(
     DT[Sepal.Width<=input$width,.SD],extensions = c('FixedHeader'), 
      options=list(pageLength=20,fixedHeader = TRUE,dom = 'frtip')) 
    #Include DownloadHandler 
     output$downloadData <- downloadHandler(
    filename = function() { paste0("test.xlsx") }, 
    content = function(file) { 
     wb<-createWorkbook() # Create wb in R 
     addWorksheet(wb,sheetName="Output") #create sheet 
     #Creates a Data Table in Excel if you want, otherwhise only use write Data 
     writeDataTable(wb,1, DT[Sepal.Width<=input$width,.SD], colNames = TRUE, headerStyle = hs,startRow=2,tableStyle = "TableStyleLight1") 
     mergeCells(wb,sheet = "Output", cols=1:5, rows=1) 
     writeData(wb,1, "Include text also based on reactive function and in merged cells") 
     saveWorkbook(wb, file = file, overwrite = TRUE) 
     }, 
     contentType= "excel/xlsx") 
     }) 

    ui<-shinyUI(fluidPage(
     titlePanel("Shiny MWE"), 
     sidebarLayout(
      sidebarPanel(
      sliderInput("width", label = h3("Min width"), 
         min=min(DT$Sepal.Width), max=max(DT$Sepal.Width), value=mean(DT$Sepal.Width), 
         ), 
       downloadButton('downloadData', 'Download')), 

     mainPanel(
      DT::dataTableOutput("view") 
     ) 
    ) 
    )) 

    runApp(list(ui=ui,server=server),launch.browser=T) # Download button only works in browser 
関連する問題