查看更多:C#你好每个人 我非常熟悉Windows项目。我想使用c#将excel数据导入数据库。
我的SpreadSheet是
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表(这里开始两行为空,我的代码读取所有记录忽略empteis) 并将所有记录存储到数据库中。这是我的任务。我已经实现了如下代码
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.i想要一次读取总记录或根据行号和读取单元格值 并存储到变量?
我很困惑。任何机构都给我很好的进口数据建议,并提供了很好的例子 或修改我的代码。 PLZ ........
答案 0 :(得分:0)
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;
}
像这样的东西。至少它对我有用。对不起,但是尝试/ catch,检查null等取决于你。它适用于净3.5