Tag: vb.net

Interop:无法调用get_Range,也不能使用Range()返回的二维对象数组。

试图通过逐行引用来replace单元格(RowIndex,ColumnIndex).Value()调用的性能,我永远无法引用结果。 从Excel Interop开始- 效率和性能 ,其中包含使用get_range ,即提示 //get values object[,] objectArray = shtName.get_Range("A1:Z100").Value2; iFace = Convert.ToInt32(objectArray[1,1]); //set values object[,] objectArray = new object[3,1] {{"A"}{"B"}{"C"}}; rngName.Value2 = objectArray; 我想我不能使用get_Range因为这个方法对我来说是不可调用的,VB在运行时(不是可见的成员)说。 现在我想出了这样的东西: Dim Values As Object(,) Values = Sheet.Range(Sheet.Cells(RowIndex, 1), Sheet.Cells(2, 17)).Value2 For Index As Integer = 0 To 16 MsgBox(Values(0, Index)) Next 但是,引用具有两个维度索引的Values始终会返回“索引超出数组范围”exception。 使用debugging器检查数组显示一个很好的二维数组,它应该在第二维上有17个元素,所以Value (0,0)应该是一个有效的引用 – 但它不是: debugging器让我检查价值,我也可以深入Value(0,0)并看到正确的价值,但重新评估只是该元素,即检查“ […]

如何更改Excel数据透视表的源数据

目标达成:我想改变我的数据透视表使用VB.Net的源数据到一个命名的范围。 我有 : table.ChangePivotCache(wb.PivotCaches.Create(SourceType:=Excel.XlPivotTableSourceType.xlDatabase, SourceData:=sheet.Names("name_of_NamedRange").RefersToRange)) 例外: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

通过VB.NET合并Excel单元格,而不会询问每个单元格的值

我有一个VB.NET网站,我在Excel文件中组织一些数据。 我需要在Excel中合并具有相同数据的单元格,但是每次尝试此操作时,程序都会停止并显示此通知: 我不想看到它,我想程序继续而不问。 是否有可能,谢谢..

在Excel数据透视表中筛选年,月,日的DateTime字段

我正在使用EPPlus来创buildExcel报告。 现在我试图用DateTime PageField创build一个Pivot,这样用户就可以自己过滤他想看到的时间段。 但是,虽然我可以在相应的数据工作表默认情况下过滤年,月或者天,但我不明白它在Pivot中的工作情况。 这是我有什么: Dim wsPivot = excel.Workbook.Worksheets.Add("Pivot") Dim wsData = excel.Workbook.Worksheets.Add("Data") Dim source = workSheet.GetDataSource wsData.Cells("A1").LoadFromDataTable(source, True, OfficeOpenXml.Table.TableStyles.Medium6) For Each col As DataColumn In source.Columns If col.DataType = GetType(Date) Then Dim colNumber = col.Ordinal + 1 Dim range = wsData.Cells(1, colNumber, source.Rows.Count, colNumber) range.Style.Numberformat.Format = "dd.mm.yyyy" End If Next Dim dataRange = wsData.Cells(wsData.Dimension.Address.ToString()) […]

SeriesCollection.Add()和SeriesCollection.NewSeries()之间有什么细微差别?

我正在使用vb.net来控制一个excel工作簿。 我注意到在图表的系列集合中创build一个系列有两种select,一种是使用SeriesCollection.Add() ,一些起始参数指定为参数,另一种是使用SeriesCollection.Add() ,而不初始化参数。 我想知道,除了它们的初始化方式不同之外,我应该注意到两者之间有什么区别吗? 我想知道,因为我过去曾经使用过SeriesCollection.Add() ,但是现在想要比那个方法允许更具体地指定x和y值。 这导致我findSeriesCollection.NewSeries()方法,但我不确定是否有任何不明显的重要差异。 我的目的是创build一个新的系列,并将该系列分配给一个types为excel.series的variables,供将来操作。 我真的不想在开始时指定任何东西,但不知道这是否会导致其他问题。 提前致谢!

在VB.NET中调用Marshal.FinalRelease后,Excel的实例仍然存在

我在这里看了一些关于在我的程序运行后摆脱一个Excel实例的提示,但没有任何build议似乎工作。 当我最初运行它将创build一个Excel的实例,但程序仍在运行,我通过单击button重新运行此代码; 它会创build另一个excel实例,但是这一次它删除了它创build的实例,只留下程序第一次运行时创build的实例。 到目前为止,我的代码是这样的:( 更新代码截至2012年9月14日) Private Sub GetBatchFileContents() Dim xlApp As Excel.Application Dim xlWB As Excel.Workbook Dim xlWS As Excel.Worksheet Dim xlRan As Excel.Range Dim xlVal(,) As Object Dim lastRow As Int32 xlApp = New Excel.Application() xlWB = xlApp.Workbooks.Open(TextBox1.Text.ToString(), _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, […]

SELECT命令不会复制所有数据

我是通过使用SELECT语句将我的数据从Excel复制到datagridview。 但是不好performance.. 数据显示如下 但我的Excel数据 我的代码: Dim CON As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""D:\OTDR_DATA\" & TextBox1.Text & "\PRODUCT_CAREER.XLS"";Extended Properties=""Excel 8.0;HDR=YES"";") Dim DA As New OleDbDataAdapter("SELECT * FROM [PRODUCT_CAREER$]", CON) DA.Fill(DS) DataGridView1.DataSource = DS.Tables(0) 有谁知道这是为什么? 我有search谷歌,但不是这样的问题

有没有理由不使用“1”类小VSTO插件?

我知道,实际上,如果你在VS中创build一个VSTO项目,那么在你编写一行代码之前,你需要自动生成几个类。 我也明白(我认为)单一责任原则。 也就是说,我发现自己写了几个小的VSTO项目(实际的插件代码总共是60行),要部署在单机上。 他们都工作,而且主要是处理/转换从机器人或其他机器出来的数据,所以人们可以更好地理解它。 有没有一个原因,我不应该把我所有的代码放到一个类中? 我可以很容易地跟踪一些小的事情(很明显是系统命名的),我觉得维护起来更容易一些。 现在我已经做了4次,我强迫自己遵守严格的课程,2就在今天,我把所有的代码扔到一个class级。 我没有看到性能差异,他们似乎都工作得很好,负载相当。 我错过了什么吗? 我从来没有上过一门编程课,所以我确定我有很多坏习惯,但也许这是因为我总是看到一些表面上工作得很好的东西? 我很想知道是否有人会举一些例子,特别是对VSTO更感兴趣,哪里会出错。

我从Excel导入348k行数据到VB.net SQL。 我得到这个错误:超时过期

我得到这个错误: system.data.sqlclient.sqlexception超时。 在操作完成之前已经超时的时间或者服务器没有响应。 码: Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\z.fontanilla\Documents\etl.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes""") ExcelConnection.Open() Dim expr As String = "SELECT * FROM [Sheet1$]" Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection) Dim objDR As OleDbDataReader Dim SQLconn As New SqlConnection() Dim ConnString As String = "Data Source=cyayay\sqlexpress;Initial Catalog=reportingDB;Integrated Security=True" SQLconn.ConnectionString = ConnString SQLconn.Open() Using bulkCopy […]

用户完成后closuresExcel

任务非常简单: 我想从VB.net GUI打开一个Excel文档(.xls) 用户将在Excel文件上工作 用户在完成时closuresExcel文件 我想要VB.net代码释放Excel对象 问题是,当用户closures文件时,Excel对象仍然可以在任务pipe理器的进程选项卡上看到。 如果我打开文件后立即写XlApp.quit() ,用户将无法做任何事情。 如何知道用户何时closuresExcel文件,以便我可以运行代码来释放Excel对象? 我到目前为止: Dim xlapp as new Excel.Application Dim xlwb as excel.workbook = xlapp.workbooks.open("file path") xlapp.visible = true 'The user do work here' 'What should I put in between here to detect when the user exits the excel file???" xlwb.close() xlapp.quit() releaseObject(xlwb) releaseObject(xlApp)