Tag: datareader

如果列中的前一个单元格为空,则DataReader不会在Excel单元格中看到数据

使用OleDbDataReader读取.xls文件时出现奇怪的问题。 基本上,如果列中以前的单元格是空的,它不会在单元格中看到数据。 如果我将数据移动到Excel工作表的顶部,那么一切正常。 我不确定,但我认为这与数据之前的空单元的数量有关。 任何帮助或build议将不胜感激。

阅读excel工作表和数据

我想读取我的WEBApplication excel文件,我发现一个办法做到连接string的问题是,我不配偶知道工作表的数量和名称。 此外,我想在DropDownList中使用这个名字,让用户能够select一个。

如何检查一个单元格是否在EXCEL中只读使用C#

我从数据库导入数据到Excel工作表。 为此,我正在使用datareader。 Excel工作表模板有一些macros和几个公式计算,而不是正常的Excel工作表。 所以只有在允许写入特定单元格的情况下,才能将数据写入Excel表格。 如果不是,则不应导入数据。 所以对于这个,我有一个XML文件,说哪一列我应该开始写,在哪一行应该停止,我已经做了很多工作表。 但是在一张表中,该行的第一个单元是“只读”(locking),其余的是允许写入访问。 由于我使用Datareader从数据库中获取整行,因此无法写入locking的单元格,导致需要写入其他单元格。 我附上代码片段以供参考。 请帮助我这样做。 示例:: if (reader.HasRows) { minRow = 0; minCol = 0; Excel.Workbook SelWorkBook = excelAppln.Workbooks.Open(curfile, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, false, false, false); Excel.Sheets excelSheets = SelWorkBook.Worksheets; Excel.Worksheet excelworksheet = (Excel.Worksheet)excelSheets.get_Item(CurSheetName); // Process each result in the result set while […]

SqlBulkCopy与列映射之外的C#边界exception

我遇到一个问题,而使用SqlBulkCopy将一些数据从Excel复制到SQL Server表。 基本上,我需要将Excel文件的一些行的所有内容复制到表中。 我有这个工作使用直SqlBulkCopy没有列映射,但只有修改后的Excel文件(删除当前未使用/空列)。 由于我们的工作stream程,我们需要Excel文件保持不变,所以我尝试使用列映射。 (我宁愿避免使用临时表来工作,因为我的SQL技能不是那么好) 我的代码下面的作品完美,除了它不复制最后的11列。 如果我增加最后的数字(213)到224来尝试包含这些,我得到一个IndexOutOfRangeException错误。 数据读取器说有一个字段数为212(这是多less非空白列,但实际总的列数是224.如果我尝试没有列映射,数据closures(右)由12列组成。 using (DbConnection excelConnection = factory.CreateConnection()) { SqlConnection sqlConn = new SqlConnection(sqlConnectionString); excelConnection.ConnectionString = connString; using (DbCommand command = excelConnection.CreateCommand()) { command.CommandText = "SELECT * FROM [Master List$A18:HD" + (17 + cusipcount) + "]"; sqlConn.Open(); excelConnection.Open(); using (DbDataReader dr = command.ExecuteReader()) { using (SqlBulkCopy bulkcopy = new […]

使用EPPlus库从SQL Server导出到Excel时出现“内存不足”exception

我正在使用EPPlus .NET库来将数据从SQL Server导出到Excel文件。 我正在使用SqlConnection类来读取数据。 对于SqlDataReader游标的每一行,我遍历所有相应行的excel单元格,并从读取器input数据。 这个问题是,当我使用这个函数的大表时,我得到了“内存不足”的错误。 我需要一个方法来创buildRead CURSOR内的某种缓冲区。 一个简洁的代码示例: Dim sqlConnection As SqlConnection = New SqlConnection() sqlConnection.ConnectionString = sqlConnectionString.ConnectionString 'connectionstring built before Dim query As SqlCommand = New SqlCommand(query…) Dim newFileStream As New FileStream("c:\junk\test.xlsx", System.IO.FileMode.Create,System.IO.FileAccess.ReadWrite) Using excelApp As New ExcelPackage(newFileStream) sqlConnection.Open() Dim sqlReader As SqlDataReader = query.ExecuteReader() Dim numOfColumns As Byte = sqlReader.FieldCount() Dim rowNumber […]

使用C#将OracleDataReader导出到Excel

我有这样的代码, string ConnectionString = ConfigurationManager.ConnectionStrings["ora"].ConnectionString; OracleConnection conn = new OracleConnection(ConnectionString); string sql = @"SELECT DISTINCT(B.MUS_K_ISIM), A.HESAP_NO FROM S_TAKIP_MUSTERI A, S_TEKLIF B WHERE A.HESAP_NO = B.HESAP_NO ORDER BY B.MUS_K_ISIM"; conn.Open(); OracleCommand cmd = new OracleCommand(sql, conn); cmd.CommandType = System.Data.CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 我如何导出一些信息从DataReader到Excel? 我想要什么,当我点击button,从DataReader中导出Excel。

用数据读取器处理excel文件:ExecuteReader()缓冲整个文件

尝试使用数据读取器处理大型Excel文件(300mb +)时遇到了一个特殊问题。 下面的代码演示了我打开Excel文件并遍历表'largesheet $'中的行的方式: const string inputFilePath = @"C:\largefile.xlsx"; const string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;\";Data Source=" + inputFilePath; // Initialize connection using (var connection = new OleDbConnection(connectionString)) { // Open connection connection.Open(); // Configure command var command = new OleDbCommand("largesheet$", connection) {CommandType = CommandType.TableDirect}; // Execute reader var reader = command.ExecuteReader(); // <– Completely […]

OleDbDataReader在单元格中看不到数据(.xlsx)

阅读xlsx文件(我使用OleDbDataReader)有一个非常奇怪的问题。 我有一个列,其中包含以下数据: 50595855 59528522 C_213154 23141411 问题是,当我读这个专栏时,读者告诉我第三行是空的。 Excel中的列格式设置为“常规”。 但是当我将格式设置为“文本”时,一切正常,阅读器看到该行中的数据。 所以只是为了实验的缘故,我在前两行用字母作为前缀,使它看起来像下面这样: C_50595855 C_59528522 C_213154 23141411 即使列格式设置为“常规”,读者也可以毫无问题地读取所有内容。 所以Excel显然在加载之前会分析列中的数据,当列的第一个单元格看起来像数字而其余的一些是文本时,Excel会感到困惑。 这对我来说真的很奇怪,因为在单元中有数据或者没有数据。 任何人有任何想法,为什么这是发生? 任何帮助都感激不尽。 问候,伊戈尔