none
ASP.NET不登录windows不能设置类PageSetup的属性 RRS feed

  • 问题

  • ASP.NET不能设置类PageSetup的属性

    问题:在没有用户登录到系统是就会报错(不能设置类PageSetup的属性),当有用户登录一切OK
    系统 win2008 datacenter X64
    IIS 7.5
    office 2010 pro plus X64
    已设置了默认打印机

    组件服务中设置如下:
    身份验证级别 无
    安全 everyone 完全控制 administrator 完全控制
    标识 administrator

                Dim XLS As Excel.Application = New Excel.Application '定义excel应用程序
                Dim Xlsbook As Excel.Workbook '定义工作簿
                Dim Xlssheet As Excel.Worksheet '定义工作表

                Try

                    XLS.Visible = False  '不显示excel 程序

                    'OutFileNameAddress = 为虚拟目录中的全路径  D:\app\abc\out
                    'RndFileName = 是一个 excel 文件如 a.xls
                    Xlsbook = XLS.Application.Workbooks.Open(OutFileNameAddress & "/" & RndFileName) '打开已存在工作薄
                    Xlssheet = Xlsbook.Sheets(1) '第1个工作表的控制句柄

                    ExcelFileName = PubClass.GetRndStr & ".xlsx" '获得文件名  PubClass.GetRndStr 只是一个会产生当前年月日时分秒毫秒的方法

                    Xlsbook.Application.DisplayAlerts = False '关闭 Excel 系统的告警,因为为了防止有未知告警

                    '---20130504增加.start
                    ExcelFileNamePrint = PubClass.GetRndStr & ".xlsx" '获得打印版文件名
                    Xlsbook.SaveAs(OutFileNameAddress & "/" & ExcelFileNamePrint, Excel.XlFileFormat.xlOpenXMLWorkbook) '保存文件

                    '--打印设置.start
                    With Xlssheet.PageSetup

                        .LeftMargin = 0 '页边距左
                        .RightMargin = 0 '页边距右
                        .TopMargin = 0 '页边距上
                        .BottomMargin = 0 '页边距下
                        .HeaderMargin = 0 '页边距页眉
                        .FooterMargin = 0 '页边距页脚

                        .CenterHorizontally = True '居中


                        '将工作表调整为一页,还原只要设置 Zoom = 100 就 OK 了
                        .Zoom = False
                        .FitToPagesWide = 1
                        .FitToPagesTall = 1

                    End With

                    '全选自动紧凑行高
                    With Xlssheet
                        .Cells.Select()
                        .Cells.EntireRow.AutoFit()
                    End With

                    XLS.Rows(2).RowHeight = 18 '设置第二行的行高为18

                    Xlssheet.Range("A1").Select() '设置光标先中 A1
                    '--打印设置.end

                    Xlsbook.Save() '保存

                    '---20130504增加.end

                    Xlsbook.Application.DisplayAlerts = True '打开 Excel 系统的告警

                    Return "True"

                Catch ex As Exception
                    ErrStr += ex.Message
                    Return ErrStr
                Finally
                    Try
                        Xlsbook.Close() '关闭工作簿

                        XLS.Quit() '退出excel应用程序

                        '这句没什么作用,递减与指定的 COM 对象关联的引用计数,但在.net中有GC
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XLS)

                        GC.Collect()    '.Net资源回收
                    Catch ex1 As Exception
                        ErrStr += ex1.Message
                    End Try
                End Try

    最好留QQ

    testhwm@163.com


    • 已移动 ThankfulHeart 2013年5月12日 3:40 ASP.NET问题
    • 已编辑 hwmweimin 2013年5月18日 7:45 有回复要求原代码
    2013年5月11日 12:22

全部回复

  • 出现“不能设置pageSetup”的属性的错误原因有很多,请您提供错误代码或者稍微详细的错误信息。有可能不是因为登录的问题。也有可能是代码在运行中出现为创建完成不能调用和设置的问题。希望您提供的错误代码

    信息能尽可能详细

    2013年5月14日 6:53
    版主
  • 首先非常感谢您(Will shao - MSFT)的回复

    但我还是觉得是EXCEL组件的权限问题,但就是找不能问题的原因

    程序在这个地方开始出错 --打印设置.start

    有用户登录服务器就没有问题


    • 已编辑 hwmweimin 2013年5月18日 7:50 打错字
    2013年5月18日 7:49
  • 我也遇到同样的问题。

    identity: 设置交互性用户,,只要登录windows ,就可以 设置。

    如果设置了:this.user,就会报错。“ Unable to set the CenterHorizontally property of the PageSetup class”

    另外,把this.user 这里设置的用户登录一下,,导出Excel的时候就可以了。。

    你找到原因了吗?

    OS:Windows 2008R2 standard

    Office:2010 perfessional

    2014年5月13日 8:32
  • 还是非常感谢您 (醉了春风)  的回复

    但遗憾的是,问题还是没有找原因,只好服务器一直都管理员登录状态,然后锁屏。

    我还是觉得是EXCEL组件的权限问题


    2014年5月13日 9:23