Tag: oledb

使用OleDB读取C#中的Excel文件?

我正在build立一个程序来读取excel文件到dataGridView中。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace pro1._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string sConnecStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=c:\\Copy_of_Acute_HCV_2008.xls" + ";" + "Extended Properties=Excel […]

在将Excel文件中的数据转换为XML时,将点隐式转换为散列

我已经成功地使用以下C#代码从Excel文件创buildXML文件: protected void Button5_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { OleDbConnection ole = new OleDbConnection(); string s = Server.MapPath("../admin/ProductOptions"); s = s + "\\" + FileUpload1.FileName; System.IO.File.Delete(s); FileUpload1.PostedFile.SaveAs(s); string path = s; ole.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\""; OleDbCommand command […]

如何使用OLEDB查询从Excel中获取列名称如果列名称不从第一行开始

我在OLEDB查询中面临2个问题 (问题1) 我需要获取用户上传的excel表的列名。 我的连接string为Excel connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileNameAndPath+"; Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; 然后我会使用这个命令 connection.Open(); DataTable schemaTable = connection.GetSchema("Columns"); Taking column name from each datarow like this string name = (string)row["COLUMN_NAME"]; 它工作正常,如果列名是在Excel的第一行。 但是如果列名行不是从第一行开始的话,它会给出列名“F1,F2,…..”。 我该如何解决这个问题? 有没有什么办法告诉查询,从哪个行取列名? (问题2) 像列标题一样,我需要从excel的特定范围中select数据。 说像从第3行到第12行的数据。所以我用这样的查询, Select RepName, Country from [Sheet1$3:12]. 但它抛出exception,像这样的消息“没有给出一个或多个所需参数的值”。 我的查询中是否有语法错误? 如果是的话可以任何人请告诉如何纠正查询?

从Excel中读取值时失去精度

我需要使用OleDb连接将值从Excel读取到DataSet。 以下是我的代码。 OleDbCommand excelCommand = new OleDbCommand(); OleDbDataAdapter excelDataAdapter = new OleDbDataAdapter(); string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + filelocation + @";Extended Properties=""Excel 8.0; IMEX=1;HDR=NO;"""; OleDbConnection excelConn = new OleDbConnection(connectionString); excelConn.Open(); excelCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", excelConn); excelDataAdapter.SelectCommand = excelCommand; excelDataAdapter.Fill(ds); 读书的时候,我在细胞中失去了精确度。 例如:Excel单元格的值为-0.46256613817052 我的数据集有价值-0.4625661 Excel表格中的大部分单元格都是Numbertypes的。 如何解决这个问题? 请帮忙。

我可以使用OleDB获取Excel行号吗?

我正在处理C#(和SQL Server)中的Excel数据。 我需要能够在有问题的任何Excel行上向最终用户报告。 自然的方法是给Excel的行号。 但是,我不清楚如何获得该行号作为参考。 我有这样的东西: OleDbCommand cmd = new OleDbCommand("SELECT * FROM MyWorkSheet$", conn); 想要这样的东西: OleDbCommand cmd = new OleDbCommand("SELECT ExcelRowId,* FROM MyWorkSheet$," conn); SQL的:ROW_NUMBER()确实可行,因为我无法提供适当的ORDER BY。 Excel的:ROW()不能在查询string中访问。

如何在VB.NET中将DataGridView导出为Excel格式

我正在使用OLE连接到使用VB.NET的数据库,并在DataGridView中显示结果。 我想将DataGridView中的数据导出为Excel格式文件,即用户可以将DataGridView的内容保存为MS Excel文件。

通过.Net客户端的OleDB引用的Excel值

我试图通过OleDB读取Excel文件(.xls,我认为Excel 2003兼容),但它无法获取引用字段的值。 这是我目前的testing代码(请注意,这只是该课程的一部分): Private m_conn As OleDbConnection Public Sub New(ByVal fileName As String) Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fileName) m_conn = New OleDbConnection(connString) m_conn.Open() End Sub Public Sub GetSheet(ByVal sheet As String) Dim query As String = String.Format("SELECT * FROM [{0}]", sheet) Using cmd As OleDbCommand = m_conn.CreateCommand() cmd.CommandText = query […]

安全风险:OLEDB Excel

我正在写一个Web应用程序,它将通过打开一个OLEDB连接来从一个经过validation的用户提交的Excel文件中读取数据。 谁能告诉我以这种方式打开Excel文件的安全隐患? 我知道危险的macros可以embedded到excel文件中,但是在使用OLEDB连接时仍然有风险吗? 谢谢。

用C#查询Excel文件,用数字单元格问题

我正在查询Excel文件以检索数据logging并将其显示在监视工具中。 事情是,当我试图select一个logging与它的ID,与下面的请求,它会引发执行查询时的错误: ExecuteCommandTextErrorHandling 告诉我查询中的types与目标单元格不兼容。 我的请求看起来像 SELECT TOP 20 [Fields…] FROM [RECORD$] WHERE (([id] = '1')) id列可以包含多个数字,所以它的单元格types是标准的默认types。 我的问题是 :我怎样才能获取logging而不知道它的types? 我是否必须执行列types,如果是这样的话? 我是否必须赶上例外情况,并重试没有引号? 这里是用于查询Excel文件和我的连接string的代码 public static DataTable queryXlsFile(String query, OleDbConnection dbConnection) { OleDbDataAdapter dbCommand = new OleDbDataAdapter(query, dbConnection); DataTable dt = new DataTable(); dbCommand.Fill(dt); return dt; } Provider=Microsoft.ACE.OLEDB.12.0; data source=C:\\test\\321.xls; Extended Properties=\"Excel 8.0;HDR=Yes;\"; 提前致谢。

使用Jet的OleDbDataAdapter数据types不匹配

我正在使用OleDbDataAdapter (Microsoft.ACE.OLEDB.12.0准确)从Excel工作簿检索数据。 对于一个表,我使用的是一个types化的数据集,但是对于另一个表,我不能这样做,因为列数是未知的(Excel模板可能会生成额外的列)。 问题是,如果某人在列中input了太多的数字值,“JET”似乎认为它是一个数字列,并且文本值不再被加载。 我知道你可以改变模板,并为该列设置特定的数据types,但模板已经广泛传播,所以我宁愿在导入时解决它。 现在我所尝试的是首先计算已使用列的数量,并使用已定义的Columns集合准备新的DataTable,并将它们的DataType属性设置为typeof(string) 。 可惜JET似乎并没有看这个,而是依然select了自己的方式。 我猜即使我可以在这里使用一个强types的数据集,它也不会帮助… 有谁知道如何告诉JET如何导入数据,所以我不必面对提供新的模板版本的负担? 请* 请 * :不要附带Excel自动化解决scheme…