Tag: vb.net

Excel实例没有在任务pipe理器VB.net中被杀死

一旦button执行结束,任务pipe理器中的Excel实例(excel.exe)不会被杀死。 Private Sub Extract_Click(sender As Object, e As EventArgs) Handles Extract.Click Dim xlApp As New Excel.Application Dim wbXLsource As Excel.Workbook Dim wbXLtarget As Excel.Workbook Dim shXLsource As Excel.Worksheet Dim shXLtarget As Excel.Worksheet Dim datestart As Date = Date.Now wbXLsource = xlApp.Workbooks.Open(xlSourcePath) wbXLtarget = xlApp.Workbooks.Open(xlTargetPath) Dim dateEnd As Date = Date.Now End_Excel_App(datestart, dateEnd) End Sub Private […]

Excel文件使隐藏的实例可见

在我的VB.Net Excel VSTO加载项中,我在后台打开了一堆excel文件以从中检索信息。 用户不应该看到这个,也不要与之交互。 这是通过创build一个新的Excel实例,并使用以下代码加载文件完成的: Dim loadExcelInstance as Excel.Application = New Excel.Application() loadExcelInstance.Visible = False loadExcelInstance.Workbooks.Open("Path\To\File", False, True) 最后一部分是确保文件以只读方式打开。 所有文件在Excel中被标记为Shared 。 会发生什么,就是文件在后台被读取,直到发生这种情况: 当一个特定的文件被加载时, loadExcelInstance.Visible属性突然变为True ,并且该工作簿以及所有其他工作簿在变得可见之后打开。 在这个可见的窗口中,显示工作簿本身,但通常在Excel中可见的function区不是。 昨天,这发生了一个工作簿。 将所有数据从这个工作簿复制到一个新的,保存在相同的名称和删除旧的,行为恢复正常。 今天,这发生在两个工作簿上。 有谁知道为什么发生这种情况,我怎么能防止它? 编辑:显示在单独的testing代码会发生什么: Dim goodTestInstance = New Excel.Application() goodTestInstance.Visible = False goodTestInstance.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable Dim badTestInstance = New Excel.Application() badTestInstance.Visible = False badTestInstance.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable goodTestInstance.Workbooks.Open("Path\To\GoodFile.xlsm", False, […]

从Excel中读取DataTable中的错误数据types

我试图从不同的Excel工作表中获取数据表。 我使用OleDbConnection正确获取数据表。 但是,某些列被错误地读为String ,但其中一些是Double或DateTimetypes。 我正在阅读的Excel中,我已经从一个Access文件创build它,它是用正确的数据types写的。 我也validation了Excel表格中没有“存储为文本的数字”单元格消息。 当我尝试读取这个Excel文件中大多数行都是空的列时,问题就出现了。 从这篇文章中,我得到ADO.NET根据列中的大部分值select数据types。 所以我不知道这些字段中的大部分条目都是空的事实在阅读时可能会产生影响。 但是,我再说一遍,从Access读取数据表内容时不会发生这种情况,因为Accessdevise中的字段是用相应的DataType定义的,而在Excel中则不是。 这是我的function,获取所需的工作表内容为DataTable : Public Function GetDatatable(sheetName As String, versionFilter As String) As DataTable Try Dim MyConnection As System.Data.OleDb.OleDbConnection Dim ds As System.Data.DataSet Dim MyCommand As System.Data.OleDb.OleDbDataAdapter Dim dbProvider As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;" Dim dbSource As String = String.Format("Data Source={0};", Trim(IExcelValue)) Dim dbProperties As String = "Extended […]

在读/写模式下打开Excel文件的VB问题

背景:我正在使用Microsoft.Office.Interop.Excel库打开,处理和保存Excel窗体程序中的Excel文件。 由于我不会完全进入的原因,我需要任何时候在屏幕上显示的信息是最小的,所以我使用DataTables和DataGridViews来操纵存储在Excel文件中的信息。 我可以插入和编辑信息就好了,但我的问题是保存。 我的问题: 当试图使用WorkBook.Save()函数保存回到Excel文件时,在Excel中打开文件时不会反映这些更改。 作为一个testing,我尝试了.SaveAs()函数来查看出现了什么问题,并得到了原始文件以只读模式打开的错误。 我使用.SaveCopyAs()函数来确保我的信息输出正确,保存的副本包含我所做的更改。 我尝试了任何和所有只读和保存属性,我可以find每种可能的组合,以下两个属性似乎解决了大多数其他人的问题,但不会为我工作。 xlWorkBook = xlApp.Workbooks.Open(currFile, IgnoreReadOnlyRecommended:=True, ReadOnly:=False) 我的代码是分布在几个function,因为我使用button和菜单项来操作程序,但它遵循相同的工作stream程从本网站的保存示例,除了我设置xlApp.Visible = False : http:// www。 siddharthrout.com/2012/09/12/saving-and-closing-the-excel-file-savesave-as-method/ 。 我会很感激任何帮助。 编辑:忘了提及,我正在使用Excel 2010和Visual Studio 2015与VB窗体窗体应用程序模板。

在richtextbox vb.net的表格中显示Excel数据

我正在使用gembox.spreadsheet在富文本框中导入数据,这里是代码: Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk Dim ef As ExcelFile = ExcelFile.Load(OpenFileDialog1.FileName) Dim sb As New StringBuilder() For Each sheet As ExcelWorksheet In ef.Worksheets sb.AppendLine() sb.AppendFormat("{0} {1} {0}", New String("-"c, 25), sheet.Name) For Each row As ExcelRow In sheet.Rows sb.AppendLine() For Each cell As ExcelCell In row.AllocatedCells If cell.ValueType <> […]

Excel报告生成中的问题

我正在处理一个Excel报告,我想顶行是空的,以允许插入图像。 但是,我不希望图像大小改变列的宽度,而宁愿下面的数据这样做。 这是我迄今为止: If ComDset.Tables(0).Rows.Count > 0 Then Try With Excel .SheetsInNewWorkbook = 1 .Workbooks.Add() .Worksheets(1).Select() Dim i As Integer = 1 For col = 0 To ComDset.Tables(0).Columns.Count – 1 .cells(1, i).value = ComDset.Tables(0).Columns(col).ColumnName .cells(1, i).EntireRow.Font.Bold = True i += 1 Next i = 2 Dim k As Integer = 1 For col = 0 […]

导入Excel到SQL数据库表

我正在尝试将数据从Excel电子表格写入SQL数据库。 我已经能够连接到Excel电子表格并读取数据,但是我无法将数据插入到SQL数据库表中。 目前的代码如下 任何帮助最高度赞赏。 Dim plmExcelCon As System.Data.OleDb.OleDbConnection Dim ldExcelDS As System.Data.DataSet Dim cmdLoadExcel As System.Data.OleDb.OleDbDataAdapter Dim PrmPathExcelFile As String PrmPathExcelFile = txtImportFileLocation.Text.ToString plmExcelCon = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PrmPathExcelFile + ";Extended Properties=Excel 12.0;") cmdLoadExcel = New System.Data.OleDb.OleDbDataAdapter("select * from [" + txtImportSheetName.Text + "$]", plmExcelCon) ldExcelDS = New System.Data.DataSet cmdLoadExcel.Fill(ldExcelDS) dgvImportData.DataSource = ldExcelDS.Tables(0) plmExcelCon.Close() […]

Office 2003互操作问题,界面,方法没有find

这个问题让我发疯。 其实我有很多问题 第一: 为什么在Excel互操作中有一个_Worksheet和一个Worksheet接口。 除了方法的一些属性之外,它们看起来都一样。 这很混乱! 其次,我今天的工作是通过设置Option Strict On和Option Explicit On来使VB.NET文件更加严格 虽然它适用于大多数文件,但我遇到了一个问题。 这是一个小的代码块: Private _pivotTable As Excel.PivotTable With _pivotTable pvf = .AddDataField(pvc) End With PivotTable.AddDataField在MSDN页面上定义: http : //msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.adddatafield(office.11​​).aspx 当我检查我的本地Interop的DLL W /reflection器方法是不存在的。 当我运行应用程序,并通过它,该方法正常工作。 当我尝试进入方法,我得到一个LateBoundexception。 WTF? 所以问题是:为什么接口定义不止一次(有时两次?)。 第二个问题。 AddDataField的麻烦

Windows窗体的外观

刚开始使用Visual Studio 2008,并希望将我的VBA UserForms转换为VB.NET,目的是将陈旧的UserForm控件升级到与操作系统匹配的较新的Windows窗体控件。 我在Visual Studio中创build的Windows窗体看起来不错,但是当我在PowerPoint或Excel中加载它们时,窗体控件看起来和以前一样丑陋(例如简单的矩形button)。 有没有办法在Visual Studio中使用VB.NET在我的Windows窗体中使用现代控件?

Excel Interop中的联合范围

我想要一个组合的范围。 我如何将两个范围合并为一个? Dim range1 as Excel.Range = osheetTemperatureData.Range("A7:"A10") Dim range2 as Excel.Range = osheetTemperatureData.Range("C7:"C10") Dim range3 as Excel.Range = range1 + range2 '????