C#里怎么获取excel中每个单元格的名称和值?
有一个excel表,每格都有自己的名称和值,怎么用c#把里面的内容写入sqlserver中?库里有2列,一列是名称一列是值能不能附上代码谢谢.......
有一个excel表,每格都有自己的名称和值,怎么用c#把里面的内容写入sqlserver中?
库里有2列,一列是名称一列是值
能不能附上代码谢谢.... 展开
库里有2列,一列是名称一列是值
能不能附上代码谢谢.... 展开
4个回答
展开全部
建议使用引用microsoft.office.core
microsoft.office.interop.excel
下面是我写的范例。希望能帮到你。
public string inputExcel(string Path)
{
Excel.Application excel = new Excel.ApplicationClass();
object oMissing = Missing.Value;
excel.Workbooks.Open(Path, oMissing, true, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
Excel.Workbook workbook = excel.Workbooks[1];
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
int rowCount = worksheet.UsedRange.Rows.Count;
int colCount = worksheet.UsedRange.Columns.Count;
Excel.Range range1;
DataTable dt = new DataTable();
for (int i = 0; i < colCount; i++)
{
range1 = worksheet.get_Range(worksheet.Cells[1, i + 1], worksheet.Cells[1, i + 1]);
dt.Columns.Add(range1.Value2.ToString());
}
for (int j = 1; j < rowCount; j++)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < colCount; i++)
{
range1 = worksheet.get_Range(worksheet.Cells[j + 1, i + 1], worksheet.Cells[j + 1, i + 1]);
dr[i] = range1.Value2.ToString();
}
dt.Rows.Add(dr);
}
excel.Quit();
string jieguo = "导入学号" + dt.Rows.Count + "个";
if (dt.Rows.Count > 0)
{
if (dt.Columns.Contains("学号"))
{
SqlParameter[] sfzh_param = new SqlParameter[1];
SqlConnection conn_bidui = new SqlConnection(conn_guanli.conn_bidui);
sql_tongyong ty = new sql_tongyong();
ty.conn_open(conn_bidui);
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["学号"].ToString().Trim().Length != 17 && dt.Rows[i]["学号"].ToString().Trim().Length != 20)
{
continue;
}
else
{
sfzh_param[0] = new SqlParameter("@SFZH", SqlDbType.VarChar, 18);
sfzh_param[0].Value = dt.Rows[i]["学号"].ToString().Trim().Replace("SF", "");
ty.db_insert_update_delete_NR(conn_bidui, "linishi_SFZH_insert", sfzh_param);
}
}
ty.conn_close(conn_bidui);
}
else
{
jieguo = "不包含学号字段!";
}
}
File.Delete(Path);
return jieguo;
}
microsoft.office.interop.excel
下面是我写的范例。希望能帮到你。
public string inputExcel(string Path)
{
Excel.Application excel = new Excel.ApplicationClass();
object oMissing = Missing.Value;
excel.Workbooks.Open(Path, oMissing, true, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
Excel.Workbook workbook = excel.Workbooks[1];
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
int rowCount = worksheet.UsedRange.Rows.Count;
int colCount = worksheet.UsedRange.Columns.Count;
Excel.Range range1;
DataTable dt = new DataTable();
for (int i = 0; i < colCount; i++)
{
range1 = worksheet.get_Range(worksheet.Cells[1, i + 1], worksheet.Cells[1, i + 1]);
dt.Columns.Add(range1.Value2.ToString());
}
for (int j = 1; j < rowCount; j++)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < colCount; i++)
{
range1 = worksheet.get_Range(worksheet.Cells[j + 1, i + 1], worksheet.Cells[j + 1, i + 1]);
dr[i] = range1.Value2.ToString();
}
dt.Rows.Add(dr);
}
excel.Quit();
string jieguo = "导入学号" + dt.Rows.Count + "个";
if (dt.Rows.Count > 0)
{
if (dt.Columns.Contains("学号"))
{
SqlParameter[] sfzh_param = new SqlParameter[1];
SqlConnection conn_bidui = new SqlConnection(conn_guanli.conn_bidui);
sql_tongyong ty = new sql_tongyong();
ty.conn_open(conn_bidui);
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["学号"].ToString().Trim().Length != 17 && dt.Rows[i]["学号"].ToString().Trim().Length != 20)
{
continue;
}
else
{
sfzh_param[0] = new SqlParameter("@SFZH", SqlDbType.VarChar, 18);
sfzh_param[0].Value = dt.Rows[i]["学号"].ToString().Trim().Replace("SF", "");
ty.db_insert_update_delete_NR(conn_bidui, "linishi_SFZH_insert", sfzh_param);
}
}
ty.conn_close(conn_bidui);
}
else
{
jieguo = "不包含学号字段!";
}
}
File.Delete(Path);
return jieguo;
}
追问
请问这里哪句是获取单元格名称的呢?
追答
for (int i = 0; i < colCount; i++)
{
range1 = worksheet.get_Range(worksheet.Cells[1, i + 1], worksheet.Cells[1, i + 1]);
dt.Columns.Add(range1.Value2.ToString());
}
循环获取字段名称
下面那段是循环获取字段的值
展开全部
用APOSE.CELLS组件,首先把excel中的数据读取出来,然后在用泛型集合遍历填充到数据库中
追问
我现在在用aspose.cells组件,从excel中如何把name也取出来?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个得用外部控件 百度一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
NPOI 这个第三方控件挺好用的 你可以试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询