C#处理表格的问题
来源:互联网 发布:百度搜索关键词优化 编辑:程序博客网 时间:2024/06/01 23:38
获取Excel工作簿名称
1
2
3
4
DataTable dtDATAExcel =
new
System.Data.DataTable();
DataTable dtDATA = _connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
null
);
工作簿名称 = dtDATA.Rows[0][2].ToString().Trim();
C#读取excel数据,不是一个有效名称,请确认它不包含无效的字符或标点,且名称不太长
public DataTable ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; DataTable dt = null; strExcel = "select * from [sheet1$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); dt = new DataTable(); myCommand.Fill(dt); return dt; } 但是上面的代码只是查询sheet1$表,如果用户把sheet表名改了就是报下面的错: 'sheet1$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。 那么怎样才能获得Excel中各个sheet的名称呢?这样就能动态的选中返回那个sheet的数据,即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择:那么下面就把解决问题的代码列出来,主要用到了 //查看excel表中所有的单元表名称 DataTable dtSheetTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null,null,null,"Table"});///<summary> ///根据excel的文件的路径提取其中表的数据 ///</summary> ///<paramname="Path">Excel文件的路径</param> privatevoidGetDataFromExcelWithAppointSheetName(stringPath) { //连接串 stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;"; OleDbConnectionconn=newOleDbConnection(strConn); conn.Open(); //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 DataTable dtSheetName=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobject[]{null,null,null,"Table"}); //包含excel中表名的字符串数组 string[]strTableNames=newstring[dtSheetName.Rows.Count]; for(intk=0;k<dtSheetName.Rows.Count;k++) { strTableNames[k]=dtSheetName.Rows[k]["TABLE_NAME"].ToString(); } OleDbDataAdapter myCommand=null; DataTabledt=newDataTable(); //从指定的表明查询数据,可先把所有表明列出来供用户选择 stringstrExcel="select*from["+strTableNames[0]+"]"; myCommand=newOleDbDataAdapter(strExcel,strConn); dt=newDataTable(); myCommand.Fill(dt); dataGridView1.DataSource=dt;//绑定到界面 }
修改表头
datatable.Columns[0].ColumnName="名字";
datatable.Columns[0].ColumnName="名字";
foreach(datarows item in datatable){ dataset_stu.tables["学生表"].rows[0].["学生"]; //这样循环读取一行的每一个列的值}上面循环去读取可以把一列的每个值读取出来
'sheet1$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。 那么怎样才能获得Excel中各个sheet的名称呢?这样就能动态的选中返回哪个sheet的数据,即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择: 那么下面就把解决问题的代码列出来,主要用到了OleDbConnection.GetOleDbSchemaTable()方法 复制代码 /// <summary> /// 根据excel的文件的路径提取其中表的数据 /// </summary> /// <param name="Path">Excel文件的路径</param> private void GetDataFromExcelWithAppointSheetName(string Path) { //连接串 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //包含excel中表名的字符串数组 string[] strTableNames = new string[dtSheetName.Rows.Count]; for (int k = 0; k < dtSheetName.Rows.Count; k++) { strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString(); } OleDbDataAdapter myCommand = null; DataTable dt = new DataTable(); //从指定的表明查询数据,可先把所有表明列出来供用户选择 string strExcel = "select * from [" + strTableNames[0] + "]"; myCommand = new OleDbDataAdapter(strExcel, strConn); dt = new DataTable(); myCommand.Fill(dt); dataGridView1.DataSource = dt; //绑定到界面 }
阅读全文
0 0
- C#处理表格的问题
- c#处理excel表格
- NPOI处理excel表格的问题
- C#处理四舍五入的问题
- 关于dom处理表格的问题 总结 转贴
- VB 表格导出Excel 自动处理‘0’的问题
- word表格的处理
- LaTeX 表格的处理
- LaTeX 表格的处理
- LaTeX 表格的处理
- 表格的处理
- C# EXCEL表格处理相关函数
- C#调用WebService的问题处理
- C#中unhandled异常处理的问题
- 表格的display问题
- 表格的变色问题
- 表格的边框问题
- C#打开WORD文档内容并显示(未完善表格图片等排版显示的处理)
- 一元函数积分学基本计算例题
- C#入门基础之计算器
- 工作第三到五年
- POJ 3311
- 使用JDBC从mysql数据库中导出数据到Oracle数据库
- C#处理表格的问题
- GOLANG 实现Stack和Queue
- Kotlin-解构声明
- 模态视图和视图控制器的生命周期
- 个人网站买主机和域名,网站备案
- 安卓自定义圆环进度
- 你可能不知道,你登曾是个气喘小胖子,靠努力逆袭完成梦想
- 云服务器一二
- 安卓中的几种进程