部分代码如下:
protected void Button1_Click(object sender, EventArgs e)
{ string path = getFilePath();
Excel.Application app;
Excel.Workbook workBook;
Excel.Worksheet workSheet;
app = new Excel.ApplicationClass();
app.Visible = true;
workBook = app.Workbooks.Open(path, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
}
protected DataSet CreateDataSource()
{
string strCon;
string path = getFilePath();
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Report1$]",olecon);
DataSet myds = new DataSet();
myda.Fill(myds);
return myds;
}
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
我现在表格能显示,数据也能显示,但是有些列的字段显示不了,而已在网页里面显示的表格的第一行是F1,F2...Fn这样的形式,我不知道这是从哪里出来的,我表格里面没有,不知道怎么回事?
protected void Button1_Click(object sender, EventArgs e)
{ string path = getFilePath();
Excel.Application app;
Excel.Workbook workBook;
Excel.Worksheet workSheet;
app = new Excel.ApplicationClass();
app.Visible = true;
workBook = app.Workbooks.Open(path, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
}
protected DataSet CreateDataSource()
{
string strCon;
string path = getFilePath();
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Report1$]",olecon);
DataSet myds = new DataSet();
myda.Fill(myds);
return myds;
}
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
我现在表格能显示,数据也能显示,但是有些列的字段显示不了,而已在网页里面显示的表格的第一行是F1,F2...Fn这样的形式,我不知道这是从哪里出来的,我表格里面没有,不知道怎么回事?
解决方案 »
- 大家给看看 连加为什么不行 阶乘倒是可以
- filesOrDirectoriesPaths 怎样多个(批量)图片。
- DropdownList绑定的效果像这样子的,怎么实现?
- 晕了,怎么往app_data下面添加数据库文件?
- asp.net
- ASP.NET 与 ACESS廉洁的问题
- javascript 如何实现对服务器控件操作?
- 关于 EXCEL导出报错的问题, 我用VS2005测试都没问题 架到服务器上就报错 虽然一分没有,但是我很需要你们,我初来这里,真是一分没有
- 请问哪位知道如何修改DataGrid中edititemplate动态生成的TEXTBOX的宽度
- 为什么只能看到HTML代码,看不到页面。
- 服务器能鉴定jquery异步请求的身份吗?
- 求一个正则表达式,提取href内容
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误:
行 99: OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Report1$]",olecon);
行 100: DataSet myds = new DataSet();
行 101: myda.Fill(myds);
行 102: return myds;
行 103:
public DataSet GetImportExcelData(string excelPath){
using(System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';",excelPath))){
try{
conn.Open();
DataTable SchemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
string tableName = string.Empty;
DataSet ds = new DataSet();
foreach(DataRow row in SchemaTable.Rows){
tableName = string.Format("select * from [{0}] ", row[2].ToString());
using(System.Data.OleDb.OleDbDataAdapter dapter = new System.Data.OleDb.OleDbDataAdapter(tableName,conn)){
System.Data.DataTable dt = new System.Data.DataTable();
dapter.Fill(dt);
ds.Tables.Add(dt);
}
}
return ds;
}
catch(Exception ex){throw ex;}
}
}
調用:DataSet ds = GetImportExcelData("excel地址");
GridView1.DataSource = ds.Tables[0].DefaultView;//可能返回多張表 這里只去第一張表
GridView1.DataBind();
必須是行列對應整齊的
因為首行的列會作為數據庫里面的字段
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += fileName;
oleDBConnString += ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'"; OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName = new DataTable();
DataSet ds = new DataSet();
oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
try
{
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
// if (m_tableName != null && m_tableName.Rows.Count > 0)
// {
// m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString();
// }
int hasmultiprotable=0;
for (int i = 0; i < m_tableName.Rows.Count; i++)
{
if (m_tableName.Rows[i]["TABLE_NAME"].ToString() == "多选题$")
hasmultiprotable = 1; }
if(hasmultiprotable==0)
{
oleDBConn.Close();
oleDBConn.Dispose();
return -2;
}
else
{
string sqlMaster;
sqlMaster = "SELECT 题目,选项A,选项B,选项C,选项D,选项E,正确答案 FROM [多选题$]";
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
oleAdMaster.Fill(ds, "NewMultiProTable");
oleAdMaster.Dispose(); oleDBConn.Close();
oleDBConn.Dispose();
}
}
catch
{
oleDBConn.Close();
oleDBConn.Dispose();
return -1; }
先放到dataset再绑定到页面
如果 列名 是很简单的 1 2 3 这样的话 默认会被替换成F1 F2 F3
不知道怎么弄