c#获取excel文件里的内容有几行
展开全部
/// <summary>
/// 将 Excel 文件转成 DataTable
/// </summary>
/// <param name="serverMapPathExcel">Excel文件及其路径</param>
/// <param name="strSheetName">工作表名,如:Sheet1$</param>
/// <param name="isTitleOrDataOfFirstRow">True 第一行是标题,False 第一行是数据</param>
/// <returns>DataTable</returns>
public DataTable ExcelToDataTable(string serverMapPathExcel, string strSheetName, bool isTitleOrDataOfFirstRow, int index)
{
string HDR = string.Empty;//如果第一行是数据而不是标题的话, 应该写: "HDR=No;"
if (isTitleOrDataOfFirstRow)
{
HDR = "YES";//第一行是标题
}
else
{
HDR = "NO";//第一行是数据
}
//源的定义
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + serverMapPathExcel + ";" + "Extended Properties='Excel 8.0;HDR=" + HDR + ";IMEX=1';";
//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
//string strExcel = "select * from [" + strSheetName + "]";
////定义存放的数据表
//DataSet ds = new DataSet();
DataTable dt = new DataTable();
//连接数据源
using (OleDbConnection conn = new OleDbConnection(strConn))
{
try
{
conn.Open();
DataTable dtSchema = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
conn.Close();
//MessageBox.Show(dtSchema.Rows.Count.ToString() + "列:" + dtSchema.Columns.Count);
//for (int i = 0; i < dtSchema.Rows.Count; i++)
//{
// richTextBox1.Text = richTextBox1.Text + (i + ":" + dtSchema.Rows[i][2].ToString()) + "\n";
//}
string tableName = dtSchema.Rows[index][2].ToString().Trim();
MessageBox.Show(tableName);
OleDbCommand OleDbCommand = new OleDbCommand("SELECT * FROM [" + tableName + "A1:AK2000]", conn);//excel的AG列
//OleDbCommand OleDbCommand = new OleDbCommand("SELECT * FROM [" + tableName + "]", conn);
OleDbDataAdapter oa = new OleDbDataAdapter(OleDbCommand);
oa.FillSchema(dt, SchemaType.Source);
oa.Fill(dt);
//oa.FillSchema(dt2, SchemaType.Source);
//oa.Fill(dt2);
//RemoveEndEmptyLines(ref dt2, dt2.Rows.Count - 1);
//dt2.Rows.RemoveAt(0);
//dataGridView1.DataSource = dt2;
//适配到数据源
//OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
//adapter.Fill(ds, strSheetName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
finally
{
conn.Close();
conn.Dispose();
}
}
return dt;//ds.Tables[strSheetName];
}
//调用时
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = false;
ofd.Title = "请选择入职员工所在的Excel文件[请确保该Excel已关闭]";
ofd.Filter = "excel file|*.xls|所有文件|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
int hireIndex = int.Parse(numericUpDown1.Value.ToString("N0"));//入职表格所在的 所在的索引
//richTextBox1.Text = richTextBox1.Text + hireIndex + "\n";
try
{
DataTable dt = ExcelToDataTable(ofd.FileName, "Sheet1$", true, hireIndex);
richTextBox1.Text = richTextBox1.Text + "行数:" + dt.Rows.Count + "\n";
Application.DoEvents();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error,请检查excel是否符合规则");
richTextBox1.Text = richTextBox1.Text + "导入出错";
Application.DoEvents();
return;
}
richTextBox1.Text = richTextBox1.Text + "操作结束";
Application.DoEvents();
}
//返回的DataTable 的行数 就是你要的结果
更多追问追答
追问
那除了这种方式 ,还有没有其他方式,谢谢
追答
你如果是打开一个Excel,然后在Excel的行中写东西,那么C#项目中添加操作Excel的类库
一般是Microsoft.Interop.Office.Excel 操作这个类库下面的类
展开全部
将excel数据读取到dataset中,取到Tables(0).Rows.Count 即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-04
展开全部
问题没表述清楚
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int row_ = xlsheet.UsedRange.Rows.Count;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |