C# 如何使用c语言根据特定单元格值从excel中获取记录
看更多:大家好 我目前正在处理windows项目。我想使用c将excel数据导入数据库 我的电子表格是C# 如何使用c语言根据特定单元格值从excel中获取记录,c#,excel,C#,Excel,看更多:大家好 我目前正在处理windows项目。我想使用c将excel数据导入数据库 我的电子表格是 ExcelSheet |--------------------------------------------------| | | |-----------------------------------------------
ExcelSheet
|--------------------------------------------------|
| |
|--------------------------------------------------|
| |
|--------------------------------------------------|
| Merchant no:12345 |
|--------------------------------------------------|
| merchant no| Id No |Amount | branch name |
|------------|-------------|---------|-------------|
| 12345 | 101 | 10000 | Hyd |
|------------| ------------| --------|-------------|
| 12345 | 102 | 20000 | Bombay |
|------------|-------------|---------|-------------|
| 12345 | 103 | 30000 | Delhi |
|---------------------------------------------------
现在,我想根据单元格值=12345读取总excel工作表,这里开始的两行为空,我的代码读取所有记录忽略空记录
并将所有记录存储到数据库中。这是我的任务。我已经实现了如下代码
private void btnImport_Click(object sender, EventArgs e)
{
try
{
DataTable dtExcel=new DataTable();
string SourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + txtExcelFile.Text + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'";
OleDbConnection con = new OleDbConnection(SourceConstr);
string query="Select * from [Sheet1$]";
OleDbDataAdapter data=new OleDbDataAdapter(query,con);
data.Fill(dtExcel);
//dgvExcelData.DataSource = dtExcel;
//dgvExcelData.ColumnHeadersVisible=false;
string DestConstr = @"Data Source=COMPUTER-8EB749;Initial Catalog=TRMSDB;Integrated Security=true";
SqlConnection connection = new SqlConnection(DestConstr);
connection.Open();
string Mno = "";
foreach (DataRow rowExcel in dtExcel.Rows)
{
foreach (DataColumn colExcel in dtExcel.Columns)
{
Mno = rowExcel[colExcel].ToString().Trim();
if (Mno != "")
{
string Mno1 = Mno.Substring(16, 10);
Mno =Mno1.ToString();
//Int32 MerchNo = Convert.ToInt32(Mno);
}
break;
}
if(Mno!="")// Mno contains the exact MerchantNo.
{
for(int i=0;i<dtExcel.Rows.Count;i++)
{
if (dtExcel.Rows.Contains("MerchantNo=1105393011"))
{
string str = dtExcel.Rows[i][0].ToString().Trim();
string str1 = dtExcel.Rows[i][1].ToString().Trim();
}
}
}
}
}
是的,我有将excel导入数据表和将数据表导入数据库的这类知识
我对这份excel表格的要求如下
1.忽略空行。
2.不读取前两行并将其视为空行。
3.根据单元格值读取记录12345
我的问题是
1.我希望一次读取总记录或基于行号和
并存储到变量中
我很困惑。任何人都能给我很好的导入数据的建议,并给出很好的例子
或者修改我的代码。plz
using Microsoft.Office.Interop.Excel;
ApplicationClass app = null;
Workbook workBook = null;
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
app = new ApplicationClass();
workBook = app.Workbooks.Open(pathToExcelFile, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Range range = ((Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[sheet.Index]).UsedRange;
for (int i = 0; i < range.Rows.Count - 1; i++)
{
Index++;
string val = ((Range)range.Cells[rowIndex, colIndex]).Value2;
}
像这样的。至少对我有用。抱歉,但是try/catch、检查null等由您决定。它适用于NET3.5一次没有catch语句的尝试?OP看起来很匆忙,也许这就是原因!