Tag: oledb

插入dateTimePicker值以exceldate单元格在C#中使用OLE DB

我正在写我的第一个程序,一个数据库,而我坚持要插入一行新的信息到我的Excel数据库文件。 问题是每行数据在A列中都有一个date单元格。 我希望能够在dateTimePicker中select一个date,通过文本框input我的其他数据(名称,工作号码等),然后点击button,将所有数据插入到新行中。 我可以用Interop来完成,但是我不喜欢它,因为它打开了excel,需要很长时间。 我目前的代码适用于所有的文本框input,但不适用于date。 我的Excel文件中的date列是“date”格式。 所以我的问题是,我可以使用OLE DB插入一个dateTimePicker值到date格式的Excel单元格? 这是我的代码,非常感谢帮助。 private void button1_Click(object sender, EventArgs e) { if (label60.Text == "new") { try { System.Data.OleDb.OleDbConnection MyConnection; System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); string sql = null; MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Declan\\Documents\\Declan\\output.xlsx;Extended Properties=\"Excel 8.0;HDR=Yes;\" "); MyConnection.Open(); myCommand.Connection = MyConnection; DateTime date1 = dateTimePicker1.Value; string post1 = textBox3.Text; string […]

如何设置Excel工作表,以便如果我添加新的列或行,ASP仍识别这些列和行作为我正在阅读的原始表的一部分

你好,来自SO的朋友。 我刚刚开始学习如何从Excel工作表中读取数据(使用OLEDB),我必须承认,当工作表中只有一个表格时,我觉得很容易。 但是,当我必须从同一个表中的多个表中读取数据时,我感到困惑,甚至当我知道必须从可以添加新列的表中的一部分读取数据时(参见第二个表中的“RETURNS#”列在图像下方) 正如我前面提到的那样,我是从excel中读取数据的新手,所以我不知道是否需要在表单中进行某种特殊configuration ,以便我可以轻松地分辨出哪些数据来自第一个数据表和来自第二个表,甚至更多的“RETURNS#”列添加到第二个表,那些新的列仍然可以被识别为“RETURNS#”部分的一部分(返回1,返回2 ) 如果能够引导我 ,或者向我推荐一些关于这个主题的文章,或者通过哪些关键词search它们,或者通过解释(如果可能的话)你将如何处理这种情况,我将非常感激。 任何意见或指导将不胜感激。 提前致谢。 PS如果你不明白我说的是什么(由于我的英文不好),请告诉我你不明白哪一部分,我会尝试重写它。 以防万一它帮助你理解我打算使用的模板,这里有一个链接

从Excel导入数据时统一的行结束符

在C#中(ASP.NET 2.0)我目前通过OleDb连接将Excel文件中的数据导入数据集。 这工作得很好。 我注意到一个小问题:在一个Excel字段中(至less在我的文件中)多行文本用简单的\n字符分隔。 这是一个问题,因为我的数据库中的数据一直有\n\r行结尾。 我注意到它试图显示导入的数据和replace换行符( System.Environment.NewLine )与<br> :来自数据库的数据显示正确,而来自Excel文件的数据是在一个单一的行。 虽然我可以在显示数据的时候完全适应这种情况,而在将数据导入到数据库后,我认为调整我的“excel导入”类会更清晰,以便行结束符与应用程序其余部分中使用的行结尾alignment。 在那里,我知道我可以在我的数据集的所有字段上循环,并在返回之前用\n\rreplace\n ,但是这可能会(会)导致一些性能问题,我发现这个解决scheme比简单地replace在显示/插入数据时。 那么,有没有更清洁的解决scheme可以用来做到这一点? 我正在考虑OleDb连接的参数,或者OleDbDataAdapter的设置,或者适配器的Fill()方法中的特定标志,或者甚至是我现在还不知道的function。 感谢您的帮助,或确认我别无select,只能去肮脏的方式:-)

在使用Excel 2013对其进行操作后,使用ACE读取.xls(97-2003)文件

我们一直在使用Access Database Engine 2010(V.14.0.4763.1000)从c#(.Net framework 4.0)中读取Excel(97-2003).xls文件,并取得了很长时间的成功。 但是,现在,在使用Excel 2013打开文件并以相同格式(97-2003 .xls)再次保存文件后,我们无法再读取这些文件。 它给了我们以下错误: 外部表格不是预期的格式。 当我们使用Excel 2007或2010打开和保存文件时,这种情况不会发生,只能在2013年。我们使用以下连接string来读取文件: Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0;HDR=YES 其中{0}被文件名和pathreplace。 看来Excel 2013以某种ACE不理解的方式破坏了97-2003文件结构。 有什么办法可以解决这个问题吗? 要清楚的是,我们需要读取的文件格式总是.xls(97-2003),我们不想读取.xlsx文件(我们可以做到这一点没有问题),但我们需要使用(97- 2003)与其他系统兼容。 编辑: 我做了一个非常简单的testing程序来说明,你可以在这里得到它: https : //www.dropbox.com/s/1ftw3emilnbuw6t/ExcelTest.rar .rar文件包含: ExcelReadingTest.exe(本程序) Program.cs(源代码) SavedFromExcel2007.xls(以97-2003格式从Excel 2007保存的示例Excel文件) SavedFromExcel2013.xls(与Excel 2013以97-2003格式保存的Excel文件相同) 要运行该示例,请保存c:\ temp中的所有文件,然后在cmd控制台上键入: C:\>cd c:\temp (Enter) C:\temp>ExcelReadingTest SavedFromExcel2007.xls (Enter) 你会得到: 1 Hello 2 World 3 Reading 4 Excel Press Enter… 如果你input: […]

OPENDATASOURCE阅读excel

我尝试从以下SQL语句中导入excel数据: SET @query = 'SELECT * INTO ##tempExcelData1 FROM OPENDATASOURCE(''Microsoft.ACE.OLEDB.12.0'',''Data Source=' + @filePath + ';Extended Properties="EXCEL 12.0;IMEX=1;HDR=yes;"'')…[Sheet1$]' EXEC SP_EXECUTESQL @query 但较大的string不能完全导入…它只读取前255个字符..但我的excel表可能有更大的string..任何人都可以帮助我呢?

OLEDB读取excel无法处理数据以特殊字符撇号(')开始

以下代码读取Excel表并将所有数据复制到C# DataTable string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; DataSet ds = null; strExcel = "select * from [" + Sheet1$+ "]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); DataTable DT = ds.Tables[0]; 当我查看DataTable […]

小计function不被OLEDB评估

我有一个Excel电子表格,我在C#中使用ADODB和OLEDB api以编程方式访问。 我试图检索一个小计函数的评估值( IMEX=1在连接string中设置),但只有当它应该是非零值时,我只得到值为0。 例如, =SUBTOTAL(9, A1:A4)会给我0。 但是, =SUM(A1:A4)给出了适当的值。 我知道我可以通过使用总和来解决这个问题,但是电子表格是通过使用小计function提供给我的。

使用clickonce发布winform应用程序时Excelfunction不起作用

我已经发布我的winforms客户端应用程序点击一次。 我正在使用Visual Studio 8和OS Win Server 2003 SP2。 首先使用点击一次我无法使用excel上传我的应用程序在Windows 7(64)的一部分,但它是在服务器2003(32)/ 2008(64)和Windows 8(32位)上工作。 但一些谷歌search后,我有一些build议,我已经改变。 我所做的更改列表 将OLEDB连接string更改为Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" 。 将目标平台改为X86。 从服务器中删除所有办公室组件,并重新安装AccessDatabaseEngine.exe 。 检查MIMEtypes的所有.deploy清单,所有在那里(也检查办公室扩展)。 完成这些更改后,我可以在所有操作系统上使用Excel上传。 但是现在3个版本之后,它再次停止工作。 现在我没有线索出了什么问题。

我如何从Excel中获取列表名称?

我如何从Excel文件中获取列表名称? 我从Excel读取的实际脚本是这样的: DataSet da = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(); string name = "PP_s_vypocty"; // I actually using manualy name for read, but i want extract name from file. string FileName = fullpath; string _ConnectionString = string.Empty; string _Extension = Path.GetExtension(FileName); // Checking for the extentions, if XLS connect using Jet OleDB if […]

当使用Ace.OLEDB插入数据到excel时,保留前导空格

正如标题所述,通过Ace.OLEDB将数据插入到excel文件后,前/后空格被修剪。 有没有办法解决它? 我想插入一些数据到一个Excel文件。 连接string是“Provider = Microsoft.Ace.OLEDB.12.0; Data Source = {0}; Extended Properties ='Excel 12.0 ;; Readonly = 0; HDR = YES; IMEX = 0;'”。 表格的一列是“MEMO”types,我可以添加一些带有前/后空格的文本,如“Hello”。 但是我发现在添加到表格后,它变成了“你好”。