Tag: vb.net

以编程方式识别Excel版本

我的VB.NET(3.5)应用程序生成Excel报告。 较新版本的Excel支持Office Open XML文件格式,而旧版本则不支持。 我希望我的应用程序能够识别本地计算机上安装了哪个版本的Excel,并使用不同的方法来生成报告(较新的版本:通过生成一个XML文件。旧版本:利用Excel自动化)。 我如何识别安装在本地机器上的Excel版本?

该字段太小,无法接受您尝试添加的数据量。 有没有人从ADO.NET得到这个错误?

从数据集更新Excel文件似乎工作正常。 但是,如果我有超过255个字符的文本,那么我会得到上面的错误。 有没有其他人得到这样的错误? 你如何解决它? 我一直在这个工作了几个小时,我没有得到任何地方。 我试图搞乱连接string和更改registry设置,但没有运气。

从Excel文件读取值

我想从12 Excel表中获得一个值。 有什么办法,我没有打开Excel表格的价值? 我正在使用vb.net。 请发布一个示例代码,如果有一种方法来读取值,而无需打开Excel文件。 谢谢

杀死一个interop应用程序进程

我有一个程序(用VB.NET编写)中的以下内容: Imports Microsoft.Office.Interop.Excel Public Class Form1 Dim eApp As New Excel.Application Dim w As Excel.Workbook w = eApp.Workbooks.Open( "path.xls", ReadOnly:=True) .. Processing Code .. //Attempts at killing the excel application w.Close() eApp.Workbooks.Close() eApp.Quit() End Class 当我运行这个几次时,我在任务pipe理器中得到了一堆EXCEL.EXE实例。 我怎样才能杀死代码中的这些进程? 代码中的所有代码都已经尝试过,并没有工作。

无法closures从VB.NET应用程序的Excel进程

我创build了下面的类来打开并收集excel文件中的工作表名称。 它在打开文件和返回每个单独工作表的名称时应该如此。 不幸的是,我无法closures文件。 这使Excel.exe进程挂起。 即使在我试图closures它在这个类的底部,过程仍然挂起。 我必须手动转到Windows任务pipe理器并杀死该进程,然后才能再次使用该文件。 即使我退出应用程序,它仍然在那里。 任何关于如何从代码中杀死这个过程的build议? Imports Excel = Microsoft.Office.Interop.Excel Public Class ExcelWrapper Dim strTypeSelection As String = String.Empty Dim strFilePath As String = String.Empty Function GetWorksheetsByName(ByVal strfilePath As String) As Array Dim xlsApp As Excel.Application Dim xlsWorkBook As Excel.Workbook xlsApp = New Excel.Application xlsWorkBook = xlsApp.Workbooks.Open(strfilePath) Dim intWsCount As Integer = xlsApp.Worksheets.Count […]

如何获得当前单元格的列索引?

我在这里有这个代码… For Each cell In worksheet.Cells(8, 2, lastRow, lastCol) Select Case "What Goes Here" End Select Next 我想validation当前单元格所在的列。我可以使用… cell.Address 但是它返回一个string和列字母和行。 会有另一种方式来获得可能只是索引或字母的专栏,或者我只需要做一些像…. If cell.Address.Contains("A")

如何从创build的“Excel.Application”对象获取进程ID?

如何从运行对象获取进程ID? Dim xlApp As Object = CreateObject("Excel.Application") 我需要使用迟绑定,因为我不能保证哪个版本我会得到这样使用Microsoft.Office.Interop.Excel将无法正常工作。 'do some work with xlApp xlApp.Quit System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) xlApp = nothing 此时Excel仍在后台运行。 我熟悉所有使用variables的build议并释放它们,然后使用: System.Runtime.InteropServices.Marshal.ReleaseComObject(o) 。 这不能可靠地工作。 我所做的工作非常复杂。 我使用每个循环等使用多个文件。 在Excel中释放所有资源是不可能的。 我需要一个更好的select。 我想在Excel上使用Process.Kill ,但我不知道如何从xlApp对象获取进程。 我不想杀掉所有的Excel进程,因为用户可能打开了一个工作簿。 我尝试使用Dim xProc As Process = Process.Start(ExcelPath)然后使用xProc.Kill()有时候,除了使用XLApp = GetObject("Book1").Application获取正确的Excel对象有点棘手外, XLApp = GetObject("Book1").Application或XLApp = GetObject("", "Excel.Application")如果用户已打开Excel窗口。 我需要一个更好的select。 我不能使用GetActiveObject或BindToMoniker获取Excel对象,因为它们只能在使用早期绑定的情况下工作。 例如Microsoft.Office.Interop.Excel 如何从运行对象获取进程ID? 编辑:实际上,我不是真的有兴趣在如何让Excel很好地退出rehash。 其他许多问题都解决了这个问题 在这里 , 在这里,我只是想杀死它; 干净,准确,直接。 我想杀死我开始的确切过程,而不是其他的。

为什么要杀死Excel进程是一件坏事?

我已经看到了很多关于如何确保Excel实际上退出的文章和问题,而且这个过程并没有维持下去。 以下是描述问题的知识库文章以及Microsoft推荐的解决scheme。 主要有: 'close files 'Quit Excel xlApp.quit() 'Release and collect garbage System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp) GC.Collect() GC.WaitForPendingFinalizers() 许多人不build议杀死这个过程; 请参阅如何正确清理Excel互操作对象和了解.net中的垃圾收集 另一方面,很多人不推荐使用GC.Collect。 看看使用GC.Collect()有什么错误? 在我的经验中,杀死这个过程是确保Excel不见了的最快最容易的方法。 我的代码只杀死它启动的确切过程,没有其他的。 我确保closures所有打开的工作簿,退出应用程序并释放xlApp对象。 最后,我检查过程是否还活着,如果是的话就杀了它。 <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _ Private Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, _ ByRef lpdwProcessId As Integer) As Integer End Function Sub testKill() 'start the application Dim xlApp As Object = CreateObject("Excel.Application") 'do some […]

通过VB.NET改变excel表格的单元格颜色

我正在通过visual basic.net将一些数据从数据库写入到excel。我需要更改一些单元格的背景,还需要使文本变为粗体。 我需要这样的东西: xlWorkSheet.Cells(rownumber, 1).BackgroundColor = Color.Yellow xlWorkSheet.Cells(rownumber, 1).Font.isBold = True 当然以上都不行,我该怎么办? 谢谢..

Excel过程仍然在VB.netclosures后运行

我的问题基本上是如何结束使用Excel时运行的Excel.exe进程。 在应用程序中,我打开并使用一对Excel工作簿,然后让用户按照自己的意愿去做,问题是我的应用程序永远不会放弃Excel进程。 如果在closuresexcel之前closures了应用程序,那么在excelclosures的时候这个过程就会结束,否则如果我在closuresexcel之后closures了我的应用程序,那么这个过程将继续运行。 我已经尝试了一些我在互联网上发现的与GC.collect相关的事情,并等待未决的终结器或者沿着这些线路发生的事情,但是都没有成功。 我也可以愉快地closuresexcel过程,唯一的问题是不知道我是否closures了一个用户重要的电子表格,他们忽略了保存还是我的。 我不确定是否有任何代码可以帮助我的答案,但我正在使用microsoft.office.interop.excel获得excel,并且我正在使用已经保存在应用程序资源文件夹中的工作簿。 -编辑- 这是我所尝试过的一切,我知道这有点矫枉过正,但遗憾的是,这还不能结束这个过程 Marshal.ReleaseComObject(FirstWorksheet) Marshal.FinalReleaseComObject(FirstWorksheet) Marshal.ReleaseComObject(SecondWorksheet) Marshal.FinalReleaseComObject(SecondWorksheet) Marshal.ReleaseComObject(ThirdWorksheet) Marshal.FinalReleaseComObject(ThirdWorksheet) Marshal.ReleaseComObject(FourthWorkSheet) Marshal.FinalReleaseComObject(FourthWorkSheet) Marshal.ReleaseComObject(xlRange) Marshal.FinalReleaseComObject(xlRange) Marshal.ReleaseComObject(SecondxlRange) Marshal.FinalReleaseComObject(SecondxlRange) Marshal.ReleaseComObject(thirdxlRange) Marshal.FinalReleaseComObject(thirdxlRange) Marshal.ReleaseComObject(fourthxlRange) Marshal.FinalReleaseComObject(fourthxlRange) Marshal.ReleaseComObject(.activeworkbook) Marshal.FinalReleaseComObject(.activeworkbook) Marshal.ReleaseComObject(excelApplication) Marshal.FinalReleaseComObject(excelApplication) MSExcelControl.QuitExcel() 'A function made by someone else I work with that was meant to close excel's process GC.Collect() GC.WaitForPendingFinalizers() GC.Collect() GC.WaitForPendingFinalizers() – 编辑 – 这是quitExcel方法 Friend Shared […]