【问题标题】:Export Strings to an Excel File将字符串导出到 Excel 文件
【发布时间】:2013-07-23 16:57:53
【问题描述】:
Textbox1.Text >> "A1"

我的目标是打开现有的 Excel 电子表格,将特定字符串插入电子表格的特定单元格,然后将其打印出来。作为额外的奖励,如果有人知道我如何编写程序以打开此电子表格供用户查看,那也将非常有用。

谢谢!

【问题讨论】:

  • 到目前为止你有什么代码?有许多不同的方法可以实现您的目标
  • 现在我只有很多包含文本的文本框,我想将这些文本发送到 Excel 中的特定单元格。理想情况下,如果我可以使用 ADODB 连接来做到这一点,那会很棒,因为我已经在使用它了,但否则我真的不在乎它是如何完成的,我只想要一个方法。
  • 另外,它在VB中,不知道你是否从标签中注意到
  • XLS 有多简单?可以使用 CSV 数据吗?
  • 可能。不过,我宁愿能够将这些字符串直接传递到 excel 中。

标签: vb.net excel io


【解决方案1】:

这可能看起来有点粗略,但是...它可能会对您有所帮助。您可以简单地创建一个带有 .XLS 扩展名的文本文件。您可以将文本放入文件中,其中制表符在 Excel 中被识别为列分隔符,而回车在 Excel 中被识别为行分隔符

ColA Row1   ColB Row1   ColC Row1
ColA Row2   ColB Row2   ColC Row2

在上面的示例中,将部分之间的空格替换为制表符,使用 .XLS 扩展名将其保存到硬盘驱动器,然后在 Excel 中打开,您将在单独的列和行中看到文本

【讨论】:

    【解决方案2】:

    您可以使用 OLEDB 连接来更新电子表格。然后您可以执行以下操作来打印它:

        Dim strFile As String = "c:\test.xls"
        Dim objProcess As New System.Diagnostics.ProcessStartInfo
    
    
        With objProcess
            .FileName = strFile
            .WindowStyle = ProcessWindowStyle.Hidden
            .Verb = "print"
    
            .CreateNoWindow = True
            .UseShellExecute = True
        End With
        Try
            System.Diagnostics.Process.Start(objProcess)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    

    打印完成后,您可以通过简单的System.Diagnostics.Process.Start("c:\test.xls") 来打开工作簿供用户查看。

    或者,您可以使用 OLEDB 连接来更新电子表格。然后你可以通过互操作打开它,像这样。您也可以同时将字符串输入到工作簿中(不使用 OLEDB 连接)。添加对 Microsoft.Office.Interop.Excel 的引用。

    Imports Microsoft.Office.Interop
    Public Class MyExcel
       Private Sub StartExcel()
         Dim xlApp As New Excel.Application
         xlApp.Visible = True
         Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open("c:\test.xlsx")
         Dim xlSheet As Excel.Worksheet = xlBook.ActiveSheet
         Dim xlSheet2 As Excel.Worksheet = xlBook.Worksheets("Sheet 3")
         xlSheet2.Range("B5").Value2 = "my new string"
         xlSheet.Range("A1").Value2 = "my string"
         xlBook.PrintPreview()
       End Sub
    End Class
    

    【讨论】:

    • Interop 版本看起来很漂亮,但我想它很难做到防弹。看看这个线程:stackoverflow.com/questions/17781708/…
    • @rheitzman 这是关于正确关闭应用程序的一个非常有效的观点。但是,在这种特殊情况下,听起来他想为用户打开工作簿。我在上面发布的代码就是这样做的,让用户像往常一样退出工作簿/Excel。
    • 它几乎工作了,除了它说 Excel.Application 没有定义。它不适用于两个 Excel 引用。知道发生了什么吗?
    • @KevinKesicki 您是否在班级上方添加了Imports Microsoft.Office.Interop?您是否添加了对 Microsoft.Office.Interop.Excel 的引用?要使互操作正常工作,还必须在目标计算机上安装 Excel。
    • @KevinKesicki 我很抱歉。在新 Excel 应用程序的声明下方添加 xlApp.Visible = True 行。我已经编辑了我的答案以包含它。
    【解决方案3】:

    使用 Excel 自动化很容易,但建议仅用于用户参与和用户交互的情况,因为自动化 Excel 仍然可以显示需要用户干预的各种模式对话框。如果应用程序不应该是用户交互的,最​​好使用Open XML SDK for Office 之类的东西,或第三方产品(例如Aspose.Cells,我自己使用),它会运行得更快而不是容易停下来引起用户的注意。在服务器/用户无人参与的应用程序中,Microsoft specifically recommends 表示未完成 Office 应用程序的自动化,并且将不支持 Office 应用程序自动化,并且在这些情况下可能会违反许可要求。

    【讨论】:

    • 在所有帐户上都正确,但我认为 OP 正在将其部署在用户参与的环境中
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多