C#对EXCEL二次开发中,从第二行开始获取J、O两列的值,判断J列的值,如果为A,则将该行所以的列的值依次复制到表名为A的表格,如果为B,则将该行所以的列的值依次复制到表名为B的表格,同理依次判断的代码
时间: 2024-11-04 19:14:19 浏览: 15
在C#中使用ExcelDataReader等库进行二次开发时,你可以按照以下步骤操作:
```csharp
using ExcelDataReader;
using System.IO;
// 定义需要的数据表名和对应的行为
string[] tableName = { "TableA", "TableB" };
char[] conditionColumn = 'J'; // 列名假设为J
char expectedValue = 'A'; // 判断条件
// 假设Excel文件路径为excelFilePath
using (var stream = File.OpenRead(excelFilePath))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
while (reader.Read())
{
var jValue = reader.GetValue(conditionColumn - 'A'); // 减去'A'的ASCII码转换为整数
if (jValue.ToString() == expectedValue.ToString())
{
string rowIndexStr = reader.CurrentRow.RowNumber.ToString(); // 获取当前行索引
var values = new List<object>(); // 用于存放所有列的值
for (int i = 0; i < reader.FieldCount; i++)
values.Add(reader.GetValue(i));
// 根据索引读取对应表格并写入数据
WriteToDataTable(tableName[expectedValue - 'A'], rowIndexStr, values);
}
}
}
}
private void WriteToDataTable(string tableName, string rowIndex, List<object> values)
{
// 假设已经有了连接数据库的方法,这里仅提供基本思路
using (var connection = GetConnection()) // 获取数据库连接
{
var dataTable = new DataTable();
dataTable.Columns.AddRange(values.Select(v => v.GetType()).ToArray()); // 添加列信息
DataRow newRow = dataTable.NewRow();
newRow.ItemArray = values.ToArray();
dataTable.Rows.Add(newRow);
using (var command = connection.CreateCommand())
{
command.CommandText = $"INSERT INTO {tableName} (ROW_INDEX, VALUES) VALUES (@rowIndex, @values)";
command.Parameters.AddWithValue("@rowIndex", rowIndex);
command.Parameters.AddWithValue("@values", dataTable.ToSqlString(connection)); // 将DataTable转换为SQL插入字符串
command.ExecuteNonQuery();
}
}
}
```
阅读全文