2013-04-25 39 views
0

我在這裏有一個代碼在VB.NET。該代碼使程序能夠從MS ACCESS database進行查詢並將其保存到Excel File(.xls),並提示用戶他/她是否想要打開該文件。該代碼工作正常,但我有一個問題,當文件已被打開。這些列不會自動適應其內容,這使得文件非常混亂,我也希望用戶可以選擇打印文件。有什麼方法可以解決我的問題嗎?如果你有任何澄清,隨時問。工作簿激活之後數據庫查詢到一個Excel文件

+2

嘗試將問題限制在每一個崗位。帖子中的多個問題會淡化知識庫。 – 2013-04-25 18:29:42

回答

1

要在第一個工作表自動調整的列,插入下列行:

excelWorkBook.Worksheets(1).Columns.AutoFit() 
excelWorkBook.Worksheets(1).Rows.AutoFit() 

要打印活動工作簿,使用打印方法:

excelWorkBook.PrintOut() 
+0

它工作。謝謝亞歷山大 – 2013-04-28 01:58:31

+1

如果這個答案適合你,那麼請考慮「接受」它,讓我們其他人知道你的問題已經解決。如果你發現它特別有用,你也可以「高舉」它。 – 2013-04-28 10:27:26

1

EZ方式:

  1. 製作帶有列a的.xls文件的目的地字段中,設置列寬,以及式..
  2. 使用上面的.xls作爲模板,你會在運行時使副本
  3. 使用.xls的存儲記錄從你的Access數據庫的副本

事情是這樣的:

「在按鈕事件..

Private Sub btnXLS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXLS.Click 

    'copy .xls template to .xls target --> full path 
    'consider TemplateA.xls as ".xls template" and sFN as ".xls target" (full path) 


    Try 
     My.Computer.FileSystem.CopyFile("TemplateA.xls", sFN, _ 
          FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing) 
     Dim cnXLS As Data.OleDb.OleDbConnection 
     Dim cnAccess As Data.OleDb.OleDbConnection 
     Dim cmdXLS As New Data.OleDb.OleDbDataAdapter 
     Dim cmdAccess As New Data.OleDb.OleDbDataAdapter 
     Dim dsXls As New DataSet 
     Dim dsAccess As New DataSet 

     'opening cnAccess connection codes here .. dsAccess as source dataset .. and source table 

     cmdAccess = New Data.OleDb.OleDbDataAdapter("SELECT * FROM .... , cnAccess) 
     cmdXLS.Fill(dsXls, "xls") 

     cnXLS = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & _ 
       "data source=" & sFN & ";Extended Properties=Excel 8.0;") 
     cnXLS.Open() 

     'Daftar --> as table name or sheet name in excel 
     cmdXLS = New System.Data.OleDb.OleDbDataAdapter("select * from [Daftar$]", cnXLS) 

     cmdXLS.Fill(dsXls, "xls") 

     For n = 0 To dsAccess.table(source_table).Rows.Count - 1 

      'some codes here 

      cmdXLS.InsertCommand = New OleDb.OleDbCommand(.. ,cnXls) 
      cmdXLS.InsertCommand.ExecuteNonQuery() 
     Next 
     cnXLS.Close() 

     MsgBox("Transfer finished ! -- " & sFN, MsgBoxStyle.OkOnly, "Info") 
     Exit Sub 

    Catch ex As Exception 
     MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error) 
    End Try 
End Sub 
+0

儘管我找到了解決問題的答案,但我很想了解您的解決方案。你能給我看一個示例代碼嗎? – 2013-04-28 01:59:54