• Excel嵌入网页(一) 转载


    1.            技术要点

    1.1.    Excel试验:

    A.       Excel嵌入网页的方法。

    1.       在后台用流的方式返回给前台页面展现;

    2.       在后台讲Excel格式数据定好保存到本地,在前台页面用html标签加载展示;

    B.       Excel显示格式的控制。

    1.       Excel单元格格式设置,默认为常规类型;

    2.       上下标格式的控制;

    3.       单元格水平垂直对齐方式;

    4.       单元格边框设置;

    5.       单元格合并;

    6.       字体设置,包括字体的颜色、大小、粗体、斜体、字体、下划线等;

    7.       冻结行列;

    8.       公式栏的显示与隐藏;

    9.       行标题和列表题的显示与隐藏;

    10.    网格的显示与隐藏;

    11.    水平滚动条和垂直滚动条的显示与隐藏;

    12.    Sheet页的显示与隐藏;

    C.       向Excel中填充数据,并导出为临时文件。

    1.2.    OWC试验:

    A.       OWC组件在web页面展示的方法。

    1.       将OWC中Sheet导出为本地Excel文件,再将导出的文件呈现到Web页面;

    2.       后台把配置好的Sheet直接以流文件方式返回到Web页面展现;

    3.       用html标签将OWC展现在Web页面,加载后台程序导出到本地的文件(xml、html、csv格式)来显示数据;

    B.       在OWC中的电子表格类中填充数据的方法。

    C.       OWC中显示数据格式的控制。

    1.       电子表格外观控制:工具栏的显示、Office图标的显示、列标题的显示、行标题的显示、水平滚动条的显示、垂直滚动条的显示、网格的显示、网格颜色设置;

    2.       单元格水平对齐方式;

    3.       单元格垂直对齐方式;

    4.       单元格合并;

    5.       单元格字体设置:字体、字形、字号、字体颜色、字体加粗、下划线(多种样式);

    6.       单元格边框设置;

    2.            主要模块

    2.1.    Excel

    1、Excel嵌入网页的方法:

           A、将后台定制好的Excel文件在后台用流的方式返回给前台页面展现,代码如下

    Response.ClearContent();

            Response.ClearHeaders();

            Response.ContentType = "application/vnd.ms-excel";

            Response.AddHeader("Content-Disposition", "inline;filename='我的文件'");

            Response.WriteFile(FileName);//FileName为Excel文件所在地址

            Response.Flush();

            Response.Close();

            运行效果:整个页面都充满了Excel。

          B、在前台页面框架中直接加在,代码:

          <iframe id="myExcelHtml" src ="Nomarl.xls" width = "600" height ="300" align ="middle"> </iframe>

           运行效果:可随意控制Excel在页面的显示位置。

    2、 Excel显示格式控制。

    A、单元格格式设置,默认为常规类型;Excel

    代码:

    Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);

                  //设置单元格格式为文本类型,文本类型可设置上下标

    r.NumberFormat = "@";

    //设置单元格格式为数值类型,小数点后2位

    r.NumberForma = "0.00_ "

        //设置单元格格式为货币类型,小数点后2位

     r.NumberForma = "¥#,##0.00;¥-#,##0.00"

        //设置单元格格式为会计专用类型,小数点后2位

     r.NumberForma = _"_ ¥* #,##0.00_ ;_ ¥* -#,##0.00_ ;_ ¥* ""-""??_ ;_ @_ "

        //设置单元格格式为日期类型

     r.NumberForma = "yyyy-m-d"

        //设置单元格格式为时间类型

     r.NumberForma = "[$-F400]h:mm:ss AM/PM"

        //设置单元格格式为百分比类型,小数点后2位

     r.NumberForma = "0.00%"

        //设置单元格格式为分数类型,分母为一位数

     r.NumberForma = "# ?/?"

        //设置单元格格式为科学技术类型,小数位数为2

     r.NumberForma = "0.00E+00"

        //设置单元格格式为特殊类型

         r.NumberForma = "000000"

    B、上下标格式的控制;

    代码:

    //控制输出样式为下标

                mySheet.get_Range(mySheet.Cells[i + 3, DT.Columns.Count - 3], mySheet.Cells[i + 3, DT.Columns.Count - 3]).get_Characters(a.Length + 1, b.Length).Font.Subscript = true;

                //控制输出样式为上标

     mySheet.get_Range(mySheet.Cells[i + 3, DT.Columns.Count - 3], mySheet.Cells[i + 3, DT.Columns.Count - 3]).get_Characters(a.Length + b.Length + 1, c.Length).Font.Superscript = true;

    C、              单元格水平垂直对齐方式;

    代码:

    //单元格水平,垂直居中

               r.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

         r.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

         上面代码中,枚举XLHAlign的值还有:

            // 右对齐

            xlHAlignRight,

            // 左对齐.

            xlHAlignLeft,

            // 两端对齐.

            xlHAlignJustify,

            // 分散对齐(缩进)

            xlHAlignDistributed,

            // 居中对齐

            xlHAlignCenter,

            // 依照数据类型对齐,常规

            xlHAlignGeneral,

            // 填充

            xlHAlignFill,

            // 跨列对齐.

             xlHAlignCenterAcrossSelection = 7,

          枚举XLVAlign的值还有:

                // 靠上对齐

              xlVAlignTop,

              //两端对齐.

              xlVAlignJustify = -4130,

              //分散对齐.

              xlVAlignDistributed,

              //居中对齐.

              xlVAlignCenter,

              //靠下对齐.

     xlVAlignBottom = -4107,

    D、              单元格边框设置;

    代码:

    //设置边框

     Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);

    r.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;

                  枚举XlLineStyle中还有下面线形:

                           //没边框线

                       xlLineStyleNone,

                       //双线.

                       xlDouble,

                       //点状线.

                       xlDot,

                       //虚线.

                       xlDash,

                       //连续线.

                       xlContinuous,

                       //点线交互型

                       xlDashDot,

                       //两点一线型

                       xlDashDotDot,

                       //斜线.

                       xlSlantDashDot,

    E、单元格合并

    用get_Range方法获取要合并的单元格,再设置MergeCells属性的值进行合并。

    代码:

                  //合并单元格

           myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1,4]).MergeCells = true;

    F、字体设置

    先用get_Range方法选中要设置字体的某个单元格或者或者直接用get_Characters方法直接选中要设置的字符进行设置;

    代码:

    //加粗字体

            myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Bold = true;

            //设置字体大小

            myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Size = 16;

            //设置字体的颜色

            myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.ColorIndex = 3;

            //设置字体

            myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Name = "隶书";

            //设置成斜体

            myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Italic = true;

            //设置下划线

    myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Underline = true;

    G、冻结行列

    用get_Range方法获取单元格,再设置其Freezepanes属性为true,就把该单元格右上方的行和列都冻结了,取消冻结将其值设为false即可。

    //冻结行列

                       myExcel.get_Range(myExcel.Cells[3,1],myExcel.Cells[3,1]).Activate();

             myExcel.ActiveWindow.FreezePanes = true;

    H、      公式输入栏的隐藏

    //设置是否显示Excel公式输入栏,默认为true

                       myExcel.DisplayFormulaBar = false;

    I、 列标题与行标题的隐藏

                       //设置是否显示行和列的标题,默认为true

                       myExcel.ActiveWindow.DisplayHeadings = false;

    J、网格的隐藏

                      //设置是否显示网格,默认为true

                      myExcel.ActiveWindow.DisplayGridlines = false;

    K、  水平、垂直滚动条的隐藏

                     //设置是否显示水平滚动条

                     myExcel.ActiveWindow.DisplayHorizontalScrollBar = false;

                     //设置是否显示垂直滚动条

                     myExcel.ActiveWindow.DisplayVerticalScrollBar = false;

    L、页的隐藏Sheet

                    //设置是否显示Sheet页

                    myExcel.ActiveWindow.DisplayWorkbookTabs = false;

           经过格式设置以后,展示在页面上的效果如下图:

    3、        向Excel中填充数据,并保存为临时文件

          代码:

            Excel.Application myExcel = new Excel.Application();

            //打开模板文件

            myExcel.Application.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

            //选中有数据的Cells

            Excel.Workbook myBook = myExcel.Workbooks[1];

            Excel.Worksheet mySheet = (Excel.Worksheet)myBook.Worksheets[1];

            Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);

            r.Select();

            //不单独显示Excel,最后在IE中显示

            myExcel.Visible = false;

            //第一行为报表的标题

            myExcel.Cells[1, 1] = "用模板导出的报表";

            //逐行写入数据,数组中第一行为报表的列标题

            for (int i = 0; i < DT.Columns.Count - 3; i++)

            {

                myExcel.Cells[2, 1 + i] = DT.Columns[i].Caption; ;

           }

    //在当前目录下指定一个临时文件

            string FileName = Server.MapPath("~") + """Temp.xls";

            if (File.Exists(FileName))

            {

                File.Delete(FileName);

            }

            myExcel.Save(FileName);

            mySheet.Cells.Clear() ;

            //设置不出现保存提示框

            myBook.Saved = true;

          myExcel.Application.Workbooks.Close();

    我走啊走 走啊走......
  • 相关阅读:
    LR三:post接口_ajax上传
    LR二:post接口_form表单上传
    Dijkstra优先队列优化
    Misha and Changing Handles
    HDU-1428(记忆化搜索)
    CF-599B
    POJ-1488(字符串应用)
    New Year Permutation(Floyd+并查集)
    HDU-1078
    HDU-5532(LIS-nlogn)
  • 原文地址:https://www.cnblogs.com/qxw0816/p/1450000.html
Copyright © 2020-2023  润新知