网页上传excel文件到服务器,服务端用NPOI解析excel

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyLoad.aspx.cs" Inherits="UpdateAddi_MyLoad" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <table style="width: 343px">
            <tr>
                <td style="width: 100px">单文件上传</td>
                <td style="width: 100px"></td>
            </tr>
            <tr>
                <td style="width: 100px">
                    <asp:FileUpload ID="FileUpload1" runat="server" Width="475px" />
                </td>
                <td style="width: 100px">
                    <asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="上传" />
                </td>
            </tr>
            <tr>
                <td style="width: 100px; height: 21px;">
                    <asp:TextBox TextMode="MultiLine" ID="lb_info" runat="server" ForeColor="Red" Width="1000px" Height="1000px"></asp:TextBox>
                </td>
                <td style="width: 100px; height: 21px">
                </td>
            </tr>
        </table>

    </div>
    </form>
</body>
</html>

aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.IO;

using Agiso.DBAccess;

using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

public partial class UpdateAddi_MyLoad : System.Web.UI.Page
{
    string serverpath = "";
    DataTable data = null;
    DataTable oldData = null;

    string cellValue = "";
    string dataLabel = "";

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void bt_upload_Click(object sender, EventArgs e)
    {
        try
        {
            if (FileUpload1.PostedFile.FileName == "")
            {
                this.lb_info.Text = "请选择文件!";
            }
            else
            {
                string filepath = FileUpload1.PostedFile.FileName;
                string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
                serverpath = Server.MapPath("../files/UploadFile/") + filename;
                FileUpload1.PostedFile.SaveAs(serverpath);
                this.lb_info.Text += "文件路径=" + filepath;
                this.lb_info.Text += "上传成功!";

                data = GetDataFromExcelByNPOI();

                this.lb_info.Text = "";

                //取出所有标题
                for (int i = 0; i < data.Columns.Count; i++)
                {
                    lb_info.Text += ("{" + data.Columns[i] + "}");
                }

                lb_info.Text += "\r\n";
                lb_info.Text += "//---------以上是标题,以下是单元格---------------------------";
                lb_info.Text += "\r\n";
                //取出所有标题以外的单元格
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    for (int j = 0; j < data.Columns.Count; j++)
                    {
                        if (data.Rows[i][j].ToString() == "")
                        {
                            cellValue = "------";
                        }
                        else
                        {
                            cellValue = data.Rows[i][j].ToString();
                        }
                        lb_info.Text += ("{" + cellValue + "}");
                    }
                    lb_info.Text += "\r\n";
                }
            }
            //读取数据库
            oldData = GetOrderData();
            for (int k = 0; k < oldData.Rows.Count; k++)
            {
                for (int v = 0; v < oldData.Columns.Count; v++)
                {
                    switch(v)
                    {
                        case 0:
                            dataLabel="NumIid=";
                            break;
                        case 1:
                            dataLabel="Title=";
                            break;
                        case 2:
                            dataLabel="PicUrl=";
                            break;
                        case 3:
                            dataLabel="OuterId=";
                            break;
                        case 4:
                            dataLabel="Additional=";
                            break;
                        default:
                            break;
                    }
                    lb_info.Text+=dataLabel;
                    lb_info.Text += oldData.Rows[k][v].ToString();
                    lb_info.Text += "\r\n";
                }
            }
        }
        catch (Exception ex)
        {
            this.lb_info.Text = "上传发生错误!原因是:" + ex.ToString();
        }
    }

    DataTable GetOrderData()
    {
        IDbAccess db = DbAccessDAL.CreateDbAccess();
        return db.ExecuteTable(string.Format("SELECT NumIid, Title, PicUrl,OuterId, Additional FROM AutoDummySendItemDefine WHERE Nick={0}", DbUtil.ToSqlString("***")));
    }

    DataTable GetDataFromExcelByNPOI()
    {
        IWorkbook workbook;

        if (serverpath == "") return null;

        string fileType = Path.GetExtension(serverpath);

        using (FileStream file = new FileStream(serverpath, FileMode.Open, FileAccess.Read))
        {
            if (fileType == ".xls")
            {
                workbook = new HSSFWorkbook(file);
            }
            else if (fileType == ".xlsx")
            {
                workbook = new XSSFWorkbook(file);
            }
            else
            {
                return null;
            }

            ISheet sheet = workbook.GetSheetAt(0);//取第一个表
            DataTable table = new DataTable();

            IRow headerRow = sheet.GetRow(0);
            int cellCount = headerRow.LastCellNum;
            int rowCount = sheet.LastRowNum;

            for (int i = headerRow.FirstCellNum; i < cellCount; i++)
            {
                DataColumn column = new DataColumn(headerRow.GetCell(i).ToString());
                table.Columns.Add(column);
            }

            for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
            {
                IRow 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] = GetCellValue(row.GetCell(j));
                    }
                }

                table.Rows.Add(dataRow);
            }
            return table;
        }

    }

    private object GetCellValue(ICell cell)
    {
        object value = null;
        try
        {
            if (cell.CellType != CellType.Blank)
            {
                switch (cell.CellType)
                {
                    case CellType.Numeric:
                        // Date comes here
                        if (DateUtil.IsCellDateFormatted(cell))
                        {
                            value = cell.DateCellValue;
                        }
                        else
                        {
                            // Numeric type
                            value = cell.NumericCellValue;
                        }
                        break;
                    case CellType.Boolean:
                        // Boolean type
                        value = cell.BooleanCellValue;
                        break;
                    case CellType.Formula:
                        value = cell.CellFormula;
                        break;
                    default:
                        // String type
                        value = cell.StringCellValue;
                        break;
                }
            }
        }
        catch (Exception)
        {
            value = "";
        }

        return value;
    }
}
时间: 2024-10-08 20:50:30

网页上传excel文件到服务器,服务端用NPOI解析excel的相关文章

web上传大文件时,服务端收不到上传的请求

最近在做一个视频上传任务,开发时用的都是比较小的文件,但是发不上去后,发现文件一大传不上去,一直查不到原因, 后面才发现是IIS做了文件大小的限制,一下举个IIS7的例子(引用空客的博客): 1.打开“Internet 信息服务(IIS)管理器”:2.关闭IIS服务:3.双击“Default Web Site“→双击中间窗格中的“请求筛选”→单击右侧窗格的“编辑功能设置”→修改“请求限制”下面的“允许的最大内容长度”,默认是30M,随便改大一点,我改成300M,点击“确定”:4.重新启动IIS,

网页上传整个文件夹

网页上传整个文件夹+断点续传 一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content-Range实体头.HTTP协议本身不支持断点上传,需要自己实现. 二.Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始.典型格式: Ra

微信企业号上传媒体文件之服务器文件上传

微信企业号上传媒体文件之服务器文件上传 企业在使用接口时,对多媒体文件.多媒体消息的获取和调用等操作,是通过media_id来进行的. 通过接口https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件. 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源. 通常文件上传是通过html表单进行的,通过HttpURLConn

ubuntu使用ssh远程登录服务器及上传本地文件到服务器

1. ubuntu 远程登录   首先你的ubuntu要能够支持ssh,如果不能,自行百度! 打开终端,输入 ssh  [email protected](你的服务器的IP地址) 回车就会让你输入服务器的密码,输入密码即可登录 2.上传文件至服务器 命令 scp -r 要上传的文件 [email protected](服务器IP地址):/home/byer/ 回车输入密码即可

上传本地文件到服务器

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Aspose.Pdf;using System.IO;using System.Diagnostics; namespace Windo

WebView加载html实现网页上传本地文件(图片,拍照,语音等)

前言: 这里有两个方案,第一个使用Andorid客户端和JavaScript互相调用方法来实现,这种方法极力不推荐,它会增加服务端和客户端的开发成本. 第二种就是继承WebViewChromeClient了,WebChromeClient是Html/Js和Android客户端进行交互的一个中间件,其将webview中js所产生的事件封装,然后传递到Android客户端.Google这样做的其中一个很重要的原因就是安全问题. 一,使用Android本地和JS方法互相调用完成文件上传与选择(会增客户

Linux命令行上传本地文件到服务器 、 下载服务器文件到本地

sh使用命令: scp 将本地文件上传至服务器 第一个是本地文件的路径/文件名, 例如 ./index.tar.gz  . index.html . bg.png 等 第二个是要上传到的服务器的位置  例如  root@39.106.144.90:/var/www scp path/filename userName@sseverName:path 如果是要下载服务器的文件到本地 则调换两个位置就可以 scp userName@sseverName:path path/filename 如果操作

通过二维码上传手机文件到服务器

Hello,大家好.这是我的第一篇博客,给大家分享下手机扫码上传图片到服务器实现手机pc同步. 1.自动生成二维码--> 可以去二维码生成工具网站获取api也可以直接用这个:http://qr.topscan.com/api.php?text= ? 注意:问号代表二维码访问的路径如果后面跟www.baidu.com就会跳转百度 2.这里写了个h5页面用于手机扫一扫上传文件跳转 <!DOCTYPE html> <html lang="en"> <hea

npm jdf压缩并上传静态文件到服务器

安装nodejs  http://npm.taobao.org/mirrors/node/v0.10.35/node-v0.10.35-x86.msi 命令行执行 npm install -g --registry=https://registry.npm.taobao.org [email protected] jdf u jdf o