在Excel中导出Crystal报表

时间:2014-02-18 02:19:40

标签: vb.net

在我的水晶报告中遇到问题,导出到excel。有人可以帮助我如何编码或任何建议代码,如果你导出的文件已经存在将会捕获。例如,您导出了lotinfo,下一个将是lotinfo2然后是lotinfo3等,我的代码总是导出单个文件和单个名称。

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click

    Try
        Dim CrExportOptions As ExportOptions
        Dim CrDiskFileDestinationOptions As New  _
        DiskFileDestinationOptions()
        Dim CrFormatTypeOptions As New ExcelFormatOptions
        CrDiskFileDestinationOptions.DiskFileName = _
                                    "c:\Lot Enterprise Information.xls"
        CrExportOptions = crypt.ExportOptions
        With CrExportOptions
            .ExportDestinationType = ExportDestinationType.DiskFile
            .ExportFormatType = ExportFormatType.Excel
            .DestinationOptions = CrDiskFileDestinationOptions
            .FormatOptions = CrFormatTypeOptions
        End With
        crypt.Export()
        MessageBox.Show("LOT ENTERPRISE INFORMATION IS SUCCESSFULLY EXPORTED!, LOCATED AT DRIVE C:", "PLEASE CHECK AT DRIVE C:", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Catch ex As Exception
        MsgBox("Please Select Specific date to convert!")
        'MsgBox(ex.ToString)
    End Try

End Sub

1 个答案:

答案 0 :(得分:1)

我已经使用这个功能很长一段时间了。只需根据您的使用情况进行修复。

Private Function fileExists(ByVal path As String, ByVal filename As String) As String
   ' This function basically adds a counter when the file already exists
   ' eg filename
   ' filename(1)
   ' filename(2) 

   Dim counter As Integer = 0
   Dim orginialFileName As String = System.IO.Path.Combine(path, filename)
   Dim newFileName = orginialFileName
   Dim extension As String = ""
   Dim testIndex As Integer = 0
   While File.Exists(newFileName)
      counter = counter + 1
      extension = newFileName.Substring(newFileName.LastIndexOf("."))

      filename = filename.Substring(0, filename.LastIndexOf("."))
      testIndex = filename.LastIndexOf("(")
      If testIndex <> -1 Then
          filename = filename.Substring(0, testIndex)
      End If

      newFileName = String.Format("{0}({1})", System.IO.Path.Combine(path, filename), counter.ToString())
      filename = String.Format("{0}({1})", filename, counter.ToString())

      newFileName += extension
      filename += extension
  End While

  Return filename
End Function

示例用法

Dim output as string
output = fileExists("C:\test", "file.xls")
MsgBox(output)

This链接也可能对您有用。

修改

您可以在Try-Catch阻止

之前使用它
    Dim fullPath As String = "C:\fileinfo.xls"
    Dim directory, output, filename As String
    If File.Exists(fullPath) Then
        directory = fullPath.Substring(0, fullPath.LastIndexOf("\"))
        filename = fullPath.Substring(fullPath.LastIndexOf("\") + 1)
        output = fileExists(directory, filename) 
        fullPath = path.combine(directory,output)
    End If

然后更改此部分

CrDiskFileDestinationOptions.DiskFileName = _
                                    "c:\Lot Enterprise Information.xls" 

CrDiskFileDestinationOptions.DiskFileName = _
                                    fullPath