Tag: vb.net

VSTO Bug – GetVstoObject返回错误的工作表

我正在使用VS2013上的VSTO开发Excel的应用程序级加载项。 我的代码适用于我所有的工作表,除了一个。 我发现函数GetVstoObject正在返回一个不同于作为参数给定的表单。 这是我的即时窗口现在右: ?sheet.Name "Sheet2" ?Globals.Factory.GetVstoObject(sheet).Name "Sheet1" 为什么发生这种情况? 我读了这个返回值只计算一次,对于后面的调用,返回caching的值。 有一些方法可以清除这个caching? 编辑: 在这个工作簿上,我有两张工作表,第一张命名为“Sheet1”,第二张命名为“Sheet2”。 我从来没有重命名或复制这些表中的一个,我刚开始一个新的工作簿,并创build一个额外的工作表。 这是我的代码进行debugging: Dim sheet1 As Microsoft.Office.Interop.Excel.Worksheet = formMapeamento.wb.Worksheets.Item(1) Dim sheet2 As Microsoft.Office.Interop.Excel.Worksheet = formMapeamento.wb.Worksheets.Item(2) Dim sheet1_vsto = Globals.Factory.GetVstoObject(sheet1) Dim sheet2_vsto = Globals.Factory.GetVstoObject(sheet2) Dim sheet1_vsto_inner = sheet1_vsto.InnerObject Dim sheet2_vsto_inner = sheet2_vsto.InnerObject 这是我现在的直接窗口,有更多的数据。 'Checking "Sheet1". Everithing looks as expected ?sheet1.Name "Sheet1" ?sheet1.Index 1 ?sheet1.CodeName […]

如何解决从Excel文件中读取合并单元格值的错误?

我有这个代码读取Excel文件中的每个单元格。 Do Until objRange.Cells(intRow, 1).value.Equals("小 計") intRow都会递增,但是当单元格指向一个合并的行时,比如说,第3,4和5行被合并 – 当它指向3时,它会执行,但是当它指向4时,它会返回一个错误 – System.NullReferenceException 我如何解决这个错误,所以当它导致一个错误,它会简单地增加,并移动到下一行? 我尝试On Error Resume Next但它似乎没有移动到下一个intRow 。 它仍然会导致一个错误,但这一次,这是合乎逻辑的,因为当它导致一个错误时,它会恢复下一行,所以intRow不增加,但值似乎是在递增的intRow位置。 这就是我所理解的。 任何人也可以解释这是如何造成逻辑错误? 以下是导致逻辑错误的最新代码 On Error Resume Next Do Until objRange.Cells(intRow, 1).value.Equals("小 計") 'causes an error If objRange.Cells(intRow, 1).Value.Equals("I") Then Do Until objRange.Cells(intRow + 1, 1).Value.Equals("II") If Not objRange.Cells(intRow + 1, 2).Font.Size.Equals("16") Then intBunruiType += 1 arrBunruiType(intBunruiType) = […]

IMEX = 1不会将所有行作为文本返回

在阅读excel文件上工作。 第一列大部分是数字值,但靠近底部有5个字母的行。 当然oledb想要读取它们作为空白,因为它们不是数字。 我在扩展属性中设置IMEX = 1,但似乎没有工作。 Dim myConnection As System.Data.OleDb.OleDbConnection Dim dtSet As System.Data.DataSet Dim myCommand As System.Data.OleDb.OleDbDataAdapter myConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileName & ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1; MaxScanRows=0;'") myCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", myConnection) myCommand.TableMappings.Add("Table", "Net") dtSet = New System.Data.DataSet myCommand.Fill(dtSet) 还有什么我应该试图让它读取数字值和文本值? 我希望它只是像文字一样对待。

excelvalidation规则使用vb.net使用spreadsheetgear

我想添加validation规则来dynamic使用VB.Net,我可以使用电子表格添加datevalidation到一个单元格如下 worksheet.Range(DateRange).Validation.Add(ValidationType.Date, ValidationAlertStyle.Stop, ValidationOperator.Greater, dt, Nothing) worksheet.Range(DateRange).NumberFormat = "mm/dd/yyyy" 以同样的方式,如何使单元格的validation规则只接受单个字符“x”和“X”。提前感谢。

如何使用VSTO将项目添加到Excel菜单?

我正在开发一个使用VB.NET的Excel加载项。 在这个插件中,我创build了一个新的function区,在这个function区中将会有一个Excel工作簿的菜单,菜单的每一行都应该有一个工作簿工作表的子菜单(正在检索这些文件名,path和表单来自DB)。 我有问题试图插入这些工作簿作为菜单项。 我创build了一个DAL来检索我需要和testing的所有数据,它的工作原理,我的问题是添加工作簿列表的每个元素。 任何build议,欢迎。 Public Class Ribbon1 Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load Dim listaWorkbooks As New List(Of Workbook) Dim serviceExecuta As New ServiceExecuta listaWorkbooks = serviceExecuta.BuscaWorkbooks() For Each Workbook In listaWorkbooks Menu1.Items.Add(Workbook.getNome) Next End Sub End Class

循环访问XMLReader以replace数据字段中的特殊字符

我想要将XML文件放入数据集中以使用VB.Net导出到数据库。 每天添加到这个列表中的新XML文件有可能会有特殊字符(idk为什么任何人都会在地址条目中包含“&”)。 创buildXMLReader之后,replace转义字符的最简单方法是什么? 伪代码是什么样的? stream读者也许? 或者,这与XMLReader的工作? 这是我现在的代码,试图创build数据集: For Each file1 In Directory.GetFiles(My.Settings.Local_Meter_Path, "*BadMeter*.xml") Dim filecreatedate As String = IO.File.GetLastWriteTime(file1) FN = Path.GetFileName(file1).ToString() xmlFile = XmlReader.Create(Path.Combine(My.Settings.Local_Meter_Path, FN), New XmlReaderSettings()) ds.ReadXml(xmlFile) 和我得到的地方,实体名称parsing错误 <Cell ss:StyleID="Default"><Data ss:Type="String">1440 COUNTY ROAD 40 X-MAS LIGHT & RV #2 CAMP HILL</Data></Cell>

将DataGridView数据导出为ex​​cel有一些麻烦

我有DataGridView1以下标题。 VENCD , ITEMUPC , RTLNUM , RTLPRICE , PROMO1 , FROM1 , TO1 , PROMO2 , FROM2 , TO2 , PROMO3 , FROM3 , TO3 使用DatePicker1 ,我筛选DataGridView1以显示只有DatePicker1.Value.Date = FROM1 OR FROM2 OR FROM3 DirectCast(DataGridView1.DataSource, DataTable).DefaultView.RowFilter = String.Format("[FROM1] = '{0:M/d/yyyy}' OR [FROM2] = '{0:M/d/yyyy}' OR [FROM3] = '{0:M/d/yyyy}'", DatePicker.Value.Date) 这是我卡住的部分。 我需要使用这个伪代码将数据导出到excel(xlsx或csv)。 if DatePicker1.Value.Date = FROM1 […]

VB:填充数据表后resize

我是VB新手。 点击button时,将Excel数据导入到DataGridView。 但整个表单和DataGridView变小了。 为什么? button点击function: Private Sub btImport_Click(sender As Object, e As EventArgs) Handles btImport.Click txbStatus.Text = "Import data from excel…" 'DataGridView1.DataSource = GetTable() DataGridView1.DataSource = excel_accerror.GetTable("C:\proj\test3.xlsx") 'DataGridView1.DataSource = excel_accerror.GetTable2() End Sub 从Excel导入数据 Public Function GetTable(ByVal filepath As String) As System.Data.DataTable Dim dt As New System.Data.DataTable Using MyConn As New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\pro\test3.xlsx';Extended Properties=Excel 12.0 Xml;") […]

从excel导入到列表框

我在尝试从excel导入列到vb.net表单中的列表框时出现中断错误 问题是成功导入到列表框中的所有项目后。 出现中断错误并closures程序。 这里是中断错误 An unhandled exception of type 'System.ArgumentNullException' occurred in System.Windows.Forms.dll Additional information: Value cannot be null)) 这是我的代码 Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Dim oExcel As Object = CreateObject("Excel.Application") Dim oBook As Object = oExcel.Workbooks.Open("C:\Users\User\Desktop\1.xlsx") Dim oSheet As Object = oBook.Worksheets(1) Dim i As Integer Dim cell As […]

CopyFromRecordset vb.net相当于openxml电子表格

我有一个应用程序,我正在适应从我发现在这里使用OpenXML格式化良好的电子表格。 该工具连接到数据库以获取数据并构build20(ish)工作表。 这部分工作正常。 我有问题是获取数据行。 我最初尝试的方法是逐个单元格写入单元格,但是每个单元格可能高达50k行,因此逐个单元格写入的过程非常缓慢。 我从( http://www.codeproject.com/Articles/371203/Creating-basic-Excel-workbook-with-Open-XML )开始的应用程序是一个很好的介绍这个话题,并帮助了我极大的。 AddTable的代码中甚至有一个方法。 不幸的是,这并不完整,无论我尝试什么,我都无法让代码正确工作。 我有一个数据表,我传递给该方法,我正在努力做的是获取数据表转储到工作表。 这是我的代码到目前为止: Public Shared Function AddTable(spreadsheet As DocumentFormat.OpenXml.Packaging.SpreadsheetDocument, worksheet As DocumentFormat.OpenXml.Spreadsheet.Worksheet, columnIndex As UInt32, rowIndex As UInt32, tbl As System.Data.DataTable) 'Dim t As DocumentFormat.OpenXml.Spreadsheet.Table Dim row As DocumentFormat.OpenXml.Spreadsheet.Row Dim sheetPart As DocumentFormat.OpenXml.Packaging.WorksheetPart 'Dim sheetPart = spreadsheet.WorkbookPart.AddNewPart(Of DocumentFormat.OpenXml.Spreadsheet.Worksheet) Dim sheetData = New DocumentFormat.OpenXml.Spreadsheet.SheetData() 'Dim sheetPart = […]