Tag: oledb

外部表格与Excel 2007不在预期的格式OLEDB 12.0中

我开发了一个WEB API服务,当用户上传时,将从excel文件中读取数据。 我使用OLEDB如下: if (Path.GetExtension(filePath).ToUpper() == ".XLS") { oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\""); } else { oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"); } oledbConn.Open(); //Exception thrown at here OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter oleda = new OleDbDataAdapter(); DataSet ds = new DataSet(); […]

在检索excel数据时,检查单元格中的null和emptrystring

错误:附加信息:查询expression式'[SKU N#]!='''中的语法错误(缺less运算符)。 if (getFileExtension.ToLower() == ".xls") { conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + getFileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;;IMEX=1\""; ; } else if (getFileExtension.ToLower() == ".xlsx") { conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + getFileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;;IMEX=1\""; } OleDbConnection con = new OleDbConnection(conString); if (con.State == ConnectionState.Closed) con.Open(); System.Data.DataTable ExcelSheets = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, […]

在读取Excel表格数据的同时保留空列名称

我正在阅读一个excel文件并将内容保存到数据库。 我有两列,第一列名是空白,第二列名是A.两列都有它下面的行。 当我使用oledbconnection执行"select * from ["+excel[i]+"]")时, 空列自动replace为F1。 我需要列表和数据,因为它可以从Excel工作表中获得。 如何避免它?

(C# – Excel)如何将公式写入每个现有行的新创build列?

假设你有一个excel文件,包含大约100行的数字和行。 我想以编程方式编写一个公式列,为每个现有行添加一堆字段的值。 所以首先,我会为Excel文件创buildOpenfiledialog,findpath,通过OleDb打开它。 明白了这一点。 现在说我有下面的表格: [ 朋友| Money | 钱丢失| 天过去了| 解决 ] Bilbo,50,50,7,*这里公式 Bilso,80,50,7,*这里公式 等等… 问题是,我没有确切的行数,所以我必须枚举OleDb连接find的任何东西。 公式可能类似于=(B2-C2)* D2,但是2也是错误的,它必须是相对于它所在的任何行,即:第3行将是=(B3-C3)* D3。 我不知道如何做到这一点。 我发现直接写入单元格也不会使公式直接处理数字。 ===== 编辑: private Excel.Application Xls; private Excel.Workbooks WBs; private Excel.Workbook WB; private Excel.Worksheet WS; private Excel.Sheets SS; Excel.Range cellsRange = null; Excel.Range columnRange = null; Excel.Range rowRange = null; int numberOfColumns = 0; […]

如何从Excel中插入数据到具有标题的数据表?

我正在读excel有像百万logging首先我查询我的表(没有logging),并获得Datable。 我查询我的表来获取列名称定义在我的Excel表使用别名。 var dal = new clsConn(); var sqlQuery = "SELECT FETAPE_THEIR_TRANDATE \"Date\" ,ISSUER Issuer, ISSU_BRAN Branch , STAN_NUMB STAN, TERMID TermID, ACQUIRER Acquirer,DEBIT_AMOUNT Debit,CREDIT_AMOUNT Credit,CARD_NUMB \"Card Number\" , DESCRIPTION Description FROM ALLTRANSACTIONS"; var returntable = dal.ReadData(sqlQuery); DataRow ds = returntable.NewRow(); var dtExcelData = returntable; 所以我的数据表看起来像这样, 然后我从excel表读取logging OleDbConnection con = null; if (ext == ".xls") […]

使用OLEDB读取Excel,某些单元格读取不正确

我正在尝试读取一个Excel文件。 一些单元格包含公式,读作“#REF!”。 我只想要数值计算的单元格值,我不在乎公式。 有办法处理公式吗? 我可以在OLEDB中做这个或者我应该切换到互操作吗? 提前致谢。 var connectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=NO;IMEX=1""", fileName); string firstSheetName; using (OleDbConnection con = new OleDbConnection(connectionString)) { con.Open(); DataTable dt = con.GetSchema("Tables"); firstSheetName = dt.Rows[0]["TABLE_NAME"].ToString(); } var adapter = new OleDbDataAdapter("SELECT * FROM [" + firstSheetName + "]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "anyNameHere"); var data = […]

MS Access数据库需要更新的版本

与MS Access有关,目前我每次打开访问accdb文件时都遇到这个错误。 它说:“你试图打开的数据库需要更新版本的MS Access”。 我完全明白,基于这一点,我必须更新它。 但问题是,每当我使用这个文件之前,一切都很好,或从未发生过。 所以如果我不得不更新,它没有任何意义。 我到目前为止的假设: 发生这种情况是因为访问和excel之间的ODBC连接中的一些错误会影响数据库。 因为我使用这个访问权限是我的Excel主数据库。 任何人都有相同的经验 你的帮助对我来说意味着很多,因为如果我不能打开这个,我必须从头开始重新编码:((备份也有相同的问题,但其他访问文件可以顺利打开) 谢谢,

Csharp不能使用oledb读取excel

我正在尝试使用Visual Studio本地主机从.aspx页面读取Excel文件。 我将Excel保存在根文件夹中,但试图读取它时,显示以下exception: Microsoft Office Access数据库引擎无法打开或写入文件“”。 它已经由另一个用户专门打开,或者您需要查看和写入其数据的权限。 我的oledb代码 string connString = ConfigurationManager.ConnectionStrings["xlsx"].ConnectionString; OleDbConnection oledbConn = new OleDbConnection(connString); try { // Open connection oledbConn.Open(); // Create OleDbCommand object and select data from worksheet Sheet1 OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn); // Create new OleDbDataAdapter OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand = cmd; // […]

Oledb截断excel列

我有一个select在Excel文件中,我有一个名为“观察”(打开文本)的列。 问题是,在某些行中,这个列的内容使我只能看到内容的一部分。 try { conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path.Combine(Environment.ExpandEnvironmentVariables("%userprofile%"), "Downloads") + @"\RelPosicaoGeralPendencias.xls;Extended Properties='Excel 8.0;HDR=Yes;'"); conn.Open(); cmd = new OleDbCommand("SELECT * FROM [RelPosicaoGeralPendencias$]", conn); reader = cmd.ExecuteReader(); listaPendenciaNassau = new List<Pendencia>(); while (reader.Read()) { if (!(reader[6] is DBNull)) { Pendencia pendencia = new Pendencia(); pendencia.Contrato = reader[2] is DBNull ? null : reader[2].ToString().Replace("'", "").Trim(); […]

C#ace oledb 12只读文件

我有一个脚本任务的SSIS包。 c#脚本使用ACE Oledb 12.0提供程序连接到excel文件。 问题是,如何以只读模式连接到excel文件(如果有人打开文件,我的脚本不应该有错误 – 它应该工作)。 代码,我尝试在这里: string fileToTest = Dts.Variables["User::FileName"].Value.ToString(); string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileToTest + @";Extended Properties=""Excel 8.0;READONLY=1"""; OleDbConnection excelConnection = new OleDbConnection(connectionString); excelConnection.Open(); string sqlQuery = "SELECT * FROM [SheetName$A1:FZ1000]"; OleDbDataAdapter dataAdt = new OleDbDataAdapter(sqlQuery, excelConnection); DataSet dataSt = new DataSet(); dataAdt.Fill(dataSt, "TblName1"); DataTable dataTbl = dataSt.Tables["TblName1"]; […]