当前位置:编程学习 > C#/ASP.NET >>

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 应用程序里面有没有加权限。 --------------------编程问答--------------------
引用 楼主 tongxin1wj 的回复:
硬盘权限都开了

这其实是我们遇到了“可怜的asp.net程序员的执着”问题的一个常见现象。我们其实要顺着整个系统的架构倾向去设计我们自己的架构。既然asp.net程序默认地不应该有这类权限,那么这就不应该是asp.net程序员考虑的问题。

你们没有懂服务器程序开发的程序员吗? --------------------编程问答-------------------- 除了会在服务器上到处都去“完全降低权限”,你还需要修改一大堆设置,包括需要在web.config里修改asp.net系统启动设置等等。最后,一切都搞晕了之后,“突然就好了”。

可是这种现象,会不断发生。而且都是在将来最紧要的时刻(而不是平时)出现,让客户取笑。 --------------------编程问答-------------------- 如果否则服务器是64位,需要安装一个微软提供的软件。建议用 npoi

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;

                    }
                }
            }
        }
--------------------编程问答-------------------- 读取得Excel工作簿中所有工作表,引用文件问题。
Microsoft的EXCEL dll文件要配置,用NPOI吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,