excel上传到服务器,再从服务器读取到数据库的问题
protected void Button1_Click(object sender, EventArgs e){
string FileAddress = this.FileUpload1.FileName;
try
{
string strUpPath = @"../DataExcel/" + System.DateTime.Now.ToString("yyyyMMdd");// +@"\";
string strUrl = Server.MapPath(strUpPath + @"/" + this.FileUpload1.FileName);
//上传文件
this.FileUpload1.SaveAs(strUrl);
//处理EXcel
string excelname = strUrl;
DataSet ds = ExcelReader(excelname);
//处理数据
}
}
public DataSet ExcelReader(string excelName)
{
// 拼写连接字符串,打开连接
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelName + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
try
{
OleDbConnection objConn = new OleDbConnection(strConn);
objConn.Open();
// 取得Excel工作簿中所有工作表
DataTable schemaTable = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
OleDbDataAdapter sqlada = new OleDbDataAdapter();
DataSet ds = new DataSet();
// 遍历工作表取得数据并存入Dataset
。。。。
return ds;
}
catch(Exception ex)
{
return null;
}
}
在本机用VISUAL studio 测试 成功,IIS不成功,其他机器访问不成功,很奇怪,估计是excelname的问题但是不晓得咋个解决(硬盘权限都开了everyone读取权限)
编辑在DataTable schemaTable = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
直接抛出异常。
求大神!!! --------------------编程问答-------------------- 确定文件上传上来了吗?文件路径是否正确。 --------------------编程问答-------------------- 确定上传成功 ,出错时在读excel的时候
奇怪的是visual 编译运行 成功了 ,挂大IIS就不行 --------------------编程问答-------------------- 报错在这一步
objConn.Open(); --------------------编程问答-------------------- iis 应用程序里面有没有加权限。 --------------------编程问答--------------------
这其实是我们遇到了“可怜的asp.net程序员的执着”问题的一个常见现象。我们其实要顺着整个系统的架构倾向去设计我们自己的架构。既然asp.net程序默认地不应该有这类权限,那么这就不应该是asp.net程序员考虑的问题。
你们没有懂服务器程序开发的程序员吗? --------------------编程问答-------------------- 除了会在服务器上到处都去“完全降低权限”,你还需要修改一大堆设置,包括需要在web.config里修改asp.net系统启动设置等等。最后,一切都搞晕了之后,“突然就好了”。
可是这种现象,会不断发生。而且都是在将来最紧要的时刻(而不是平时)出现,让客户取笑。 --------------------编程问答-------------------- 如果否则服务器是64位,需要安装一个微软提供的软件。建议用 npoi
--------------------编程问答-------------------- 读取得Excel工作簿中所有工作表,引用文件问题。
public static DataTable RenderFromExcel(string filePath)
{
Stream excelFileStream = new FileInfo(filePath).OpenRead();
using (excelFileStream)
{
using (HSSFWorkbook workbook = new HSSFWorkbook(excelFileStream))
{
using (var sheet = workbook.GetSheetAt(0))//取第一个表
{
DataTable table = new DataTable();
var headerRow = sheet.GetRow(0);//第一行为标题行
int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1
//handling header.
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
{
var row = sheet.GetRow(i);
DataRow dataRow = table.NewRow();
if (row != null)
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
}
table.Rows.Add(dataRow);
}
return table;
}
}
}
}
Microsoft的EXCEL dll文件要配置,用NPOI吧
补充:.NET技术 , C#