解决方案 »
- 如何实现有效的字符串比较
- 线程难题,非高手勿进!
- 一个dataset绑定了多少表,怎么对dataset进行分页??急急..
- 关于SQL SERVER高并发访问的解决办法
- C# 自己写了一个windows服务程序,运行时错误: 错误 1053: 服务没有及时响应启动或控制请求。
- 在自定义类中怎用调用Response方法?
- 如何获取一个类的所有静态变量
- numericupdown 控件如何让它只能输入5位数字,且小数点后只能是两位.求助!
- Visual C#中的程序中如何给一个ASP.NET网站上传消息???
- 请教如何在C#的工程中嵌入一份htm文件,然后不用通过路径即可访问
- 大婶们速来给我解释下ia
- 网络客户端接收16进制数据
断点运行到这步:oleDBConn = new OleDbConnection(oleDBConnString);
完整代码是这样的:
public DataTable LendInDT(string strFilePath)
{
if (strFilePath == null)
{
throw new ArgumentNullException("filename string is null!");
} if (strFilePath.Length == 0)
{
throw new ArgumentException("filename string is empty!");
} string oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += strFilePath;
oleDBConnString += ";Extended Properties=Excel 8.0;";
OleDbConnection oleDBConn = null;
OleDbDataAdapter da = null;
DataTable m_tableName = new DataTable(); ;
DataSet ds = new DataSet();
oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
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(); }
string sqlMaster = " SELECT * FROM [" + m_tableName + "]";
da = new OleDbDataAdapter(sqlMaster, oleDBConn);
try
{
da.Fill(ds, "tb");
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
oleDBConn.Close();
oleDBConn.Dispose();
da.Dispose();
}
DataTable result = ds.Tables["tb"];
return result; }
是什么原因啊?
如果你机器装的是office2003以上版本,相应的调整上面两个值。
后来使用了aspose.cells.dll
try
{
ds = Report.GetDataTableFromExecl(phisicalFilePath);
}
catch (Exception ex)
{
ShowMessage(Page, "上传失败,请稍后重试!" + ex.Message);
return;
}public static DataSet GetDataTableFromExecl(string filePath)
{
var dsExcel = new DataSet(); var wkBook = new Workbook(filePath);
// 只取第一个sheet
var wkSheet = wkBook.Worksheets[0]; var dtTemp = new DataTable();
for (var x = 0; x < wkSheet.Cells.MaxDataRow + 1; x++)
{
DataRow dRow = null; for (var y = 0; y < wkSheet.Cells.MaxDataColumn + 1; y++)
{
var value = wkSheet.Cells[x, y].StringValue.Trim(); // 如果是第一行,则当作表头
if (x == 0)
{
// 设置表头
var dCol = new DataColumn(value);
dtTemp.Columns.Add(dCol);
}
//非第一行,则为数据行
else
{
//每次循环到第一列时,实例DataRow
if (y == 0)
{
dRow = dtTemp.NewRow();
}
//给第Y列赋值
if (string.IsNullOrEmpty(value))
{
dRow[y] = null;
}
else
{
dRow[y] = value;
}
}
} if (dRow != null)
{
dtTemp.Rows.Add(dRow);
}
}
dsExcel.Tables.Add(dtTemp); return dsExcel;
}