Tag: visual studio 2010

将HTML表格导出到Excel并格式化该Excel文件

我有以下代码: <tfoot> <tr> <td>Tot</td> <td>60</td> <td></td> <td>30</td> </tr> <tr> <td>Avg</td> <td>20</td> <td></td> <td>10</td> </tr> 代码背后: public string getWhileLoopData() { string htmlStr = ""; SqlConnection thisConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); SqlCommand thisCommand = thisConnection.CreateCommand(); thisCommand.CommandText = "SELECT * FROM MyTable WHERE TheDate = @TheDate"; thisCommand.Parameters.AddWithValue("@TheDate", txtDate.Text); int totnum1 = 0; decimal totnum2 = 0; int numRow = […]

用VB中的Excel数据填充DataGrid列

好吧,我终于得到这个代码工作几个小时后,工作: Dim path As String = OpenFileDialog1.FileName Dim myDataset As New DataSet() Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""") Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn) myData.Fill(myDataset) DataGridView1.DataSource = myDataset.Tables(0).DefaultView 现在我明白了,我将尝试将数据放在特定的位置。 在我的应用程序,我有一个datagridview设置4列。 我想要做的是将excel文件的列A放在datagridview的第一列和datagridview的第二列中的Excel文件的C列下。 所以replace: DataGridView1.DataSource = myDataset.Tables(0).DefaultView 有: DataGridView1.columns(0) = myDataset.Tables(0).columns(0) DataGridView1.columns(1) = myDataset.Tables(0).columns(2) 显然这不工作,有些东西告诉我,我可能需要一个for循环导入数据,但我从来没有从Excel文件导入信息之前,使情况变得更糟,我从来没有与datagridviews之前,所以我不知道如何去做这个。 我想这样做,如果我能: For x […]

从办公室外部启动VSTO

我有一个针对Excel的VSTO项目。 我也有用C#编写的WinForm应用程序。 这一切都使用.Net Framework 4和VS 2010在C#中编程。 我的问题是,我希望能够调用这个VSTO应用程序,而无需首先打开Excel。 所以我会点击我的WinForm应用程序中的一个button,它应该启动Excel并调用VSTO,然后将从我的数据库中读取并将一些值放入Excel工作表。 有没有这样做的官方方式,如果没有,至less有一个解决方法?

在一个Excel文件中将大型CSV转换并加载到多个工作表

后面的故事: 来自pipe理的新项目:我已经从我的老板那里得到了一个软项目来评估我们目前的ETL计划之一,在这个过程中寻找改进的空间,我正在寻找指导。 MOTIVE:由于文件大小,Excel在当前正在被使用,并且在这个过程中经常崩溃。 任务:分析人员每个月都会收到一个调查供应商提供的大型csv文件,其中包含多达750个列(不是全部唯一的名称),超过15,000行,将大型csv文件简单地转换为Excel文件,其中7个工作表根据列标题在csv。 如何分解的细节如下。 我的问题是,一个大的csv被转换成多个工作表的编辑excel文件更容易或更快使用VB.NET和VS2010或VBA,或使用Excel是最简单的方法来继续这个过程? 我是一个专家Excel用户,但我仍然是一个初学者在VBA,VB.NET或任何其他语言的编码中间。 详细问题: 我愿意使用免费或开源软件,但我最熟悉VB.NET和Excel和Excel-VBA。 我已经玩了一些编码一个简单的Windows窗体应用程序来使用类似的TextFieldParser代码在这里find的csv加载到数据表。 我曾经想过把它加载到一个数组中,甚至是一个二维数组,以便更容易地编辑列标题并find重复的列标题。 datatable选项仍然留给我更多的问题比答案,因为我需要独特的列标题,并不知道如果我打算只写一个Excel文件,我是否应该打扰数据表。 我从CodeProject尝试CSVreader将无法处理具有重复标题名称的文件。 我觉得好像是有作家阻挡,因为我不知道我应该采取哪一个方向来处理这个过程。 你可以提供的任何input将非常感激,我很抱歉,如果这个问题没有一个明确的最好的答案,谢谢。 使用Excel的当前分析员任务 目前的分析计划表示分析人员在excel中打开csv,在第1行上面插入一行,并使用vlookup将“新”列名replace为基于单独的简单的两列查找表的“旧”列名工作表。 例如 New becomes Old "org-name" becomes "org_name" or "item_1_Vendor" becomes "item_1" or "date-created_Survey" becomes "date_created" etc…checking all sent "New" columns against the list of all possible 750 columns. 然后粘贴第一行的值,然后删除包含我们想改变的新标题的第二行。 然后分析师必须修复名为“sid”的文件的主键。 调查ID字段(sid)应该有一个数字文件的每一行的数字。 有时sid显示在sid_HCAHPS或sid_CGCAHPS字段下。 分析师会在“sid”字段旁边插入一列,并在其中插入一个公式,例如: =IF(BE2<>"",BE2,IF(RD2<>"",RD2,IF(UH2<>"",UH2,"")))实际的单元格引用会改变,但是在excel公式的例子中, "sid"=Range("BE2") "sid_HCAHPS"=Range("RD2") "sid_CGCAHPS"=Range("UH2") 一旦新创build的主键列没有空白,我们可以删除原来的“sid”列。 […]

Excel Interop – types未注册

我有一个C#winform应用程序编译为x86平台,使用Excel 2003 COM互操作库。 Visual Studio项目引用Office 2003的以下互操作文件) Microsoft.Office.Interop.Excel.dll(v 11.0.0,特定版本= true)Microsoft.Vbe.Interop.dll(v 11.0.0,特定版本= false) 这个应用程序在Excel 2003,2007和2010大多数计算机上运行良好,但是其中一个用户向我报告了这个例外。 这个用户有Windows 7和Office 2010 System.InvalidCastException: Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Library not registered. […]

从2013年降级到2010年后,Excel API的例外情况

从Excel 2013降级到2010(即删除2013和安装2010)后,尝试从我的加载项访问Excel OM时,如下所示: if (this.Application.ActiveWorkbook == null) { return; } 我得到以下exception: 无法将“System .__ ComObject”types的COM对象转换为接口types“Microsoft.Office.Interop.Excel._Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:库未注册。 (来自HRESULT的exception:0x8002801D(TYPE_E_LIBNOTREGISTERED))。 我已经采取了以下步骤来解决这个问题,但没有任何工作: 修复了办公室安装 卸载并重新安装 清除registry中的所有办公室15参考 重新注册的Excel(“C:\ Program Files(x86)\ Microsoft Office \ Office14 \ excel.exe”/ o) 但是,似乎没有任何工作。 有什么我失踪或我真的要擦拭机器? 编辑:我的猜测是,在registry中仍然有冲突,但我不知道在哪里… 谢谢!

为Excel 2010构build的Excel加载项可以在Excel 2013中工作吗?

我有一个Excel添加,它是使用C#在Visual Studio中内置的。 此加载项是为Microsoft Excel 2010devise的,但是我想知道是否可以在Excel 2013中运行相同的加载项。 我收到以下错误: 您不能debugging或运行此项目,因为未安装Microsoft Office上的以下版本 有什么办法可以为Excel 2013运行相同的代码?

如何输出excel文件的每一行读取单个文件?

我怎样才能输出一个文件的Excel数据的每一行? 现在它输出正确数量的文件,但增加了数据行,所以文件1是正确的,文件2具有行1和行2等 Dim smNum As Integer = 0 If rowct > 0 Then For rr As Integer = 10 To rowct For cc As Integer = 1 To colct val = CType(r.Cells(rr, cc), Excel.Range).Value If val = "" Then Exit For str.Append(ht((cc – 1).ToString)).Append(",") str.Append(val) 'assigning the sample managaer num in column 1 If cc […]

VB.NET – OleDbException说插入到Excel电子表格时,电子表格已满

我有一个VB.Net程序读取平面文件,然后逐行parsing,将数据格式化成Excel工作簿中的不同电子表格(每行可以是任何10多种不同的loggingtypes,所以我parsing并放入适当的Excel片)。 对于较小的平面文件(小于10mb),parsing器效果很好。 但是,我正在尝试超过120MB(400K +行)的文件。 在运行时,我将得到一个OleDBException,表示电子表格已满。 现在我相当确信,Excel可以处理比平面文件更大的数据集。 所以我认为这个例外并不能告诉我真正发生的事情。 我打开一个连接,然后parsing文件中的每一行,将每行插入到excel文件中。 我认为打开/closures每个插件之间的连接性能不佳。 这可能是造成这个问题吗? 任何想法我需要做什么来处理这样一个大文件? 有些情况下,平面文件可以超过500MB。 要实际插入到Excel中,我只是做下面的事情(我构build一个基于行和值的parsing的值的SQL查询): Dim conn As New OleDbConnection() conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExportLocation.Text + "\" + importFileName + "-PVF.xls;Extended Properties=""Excel 8.0;HDR=YES""" conn.Open() Dim cmd1 As New OleDbCommand() cmd1.Connection = conn …parsing器代码… cmd1.CommandText = "INSERT INTO " + rowType + " values (" + currentRowString […]

如何在Excel中创build自定义函数来抓取MySQL数据?

我们需要为用户创build一个自定义的公式来从我们的mysql数据库中提取数据。 在用户通过authentication之后,他们会在excel中input一个公式(比如'= retrievemybirthday(“Frank Dodge”)''),我们怎么去做呢?我们并不是新手, Excel有没有关于这方面的教程?我们已经看过,但可以find任何东西。 谢谢!