如何在ASP.NET设置网页大小
例如
你定义了一个
只管写
style = & quot宽度:
100px
高度:
100px
& quot& gt& lt/div & gt;
你也可以定义自己的css样式。
看个人喜好
个人觉得css更好
直接打电话就行了。
为什么ASP上传网站时文件大小限定200K?
这个是服务器有个文件限制了。在程序里是提高不过200K以上的。
以下是怎么提高上传的大小限制。
2003解决IIS限制上传、下载文件大小及metabase.xml修改
1.停止IIS Admin Service服务。 2.按照如下的路径找到文件:系统盘(C:)Windows System32 inetsrv MetaBase.xml, 在该文件中搜索AspMaxRequestEntityAllowed,设置为你想要的数字(默认204800即200K)。 3.重新启动IIS Admin Service服务。
默认情况下,在IIS 6 全局配置中允许上传的文件长度最大为4 GB,但是在Web站点级却限制了ASP应用程序上传的最大文件长度为200 KB。如果你需要上传超过200KB的文件,则需要手动修改IIS的metabase.xml中对应Web站点的AspMaxRequestEntityAllowed属性。
metabase.xml位于”systemroot”system32inetsrv”目录下,用于保存IIS的基本配置信息。默认情况下IIS是不允许你直接对metabase.xml进行编辑的,你可以通过以下两种方式来实现:
1 停止IISAdmin服务后再编辑;
停止IIS服务与启动IIS服务的方法,在CMD命令行模式下输入以下命令:
1. net stop w3svc (停止IIS服务)
2. iisreset /stop
2 在IIS管理控制台中右击服务器名,选择属性,然后在弹出的服务器属性对话框中勾选允许直接编辑配置数据库,再点击确定即可
然后在任何文本编辑器中打开Metabase.xml文件,修改对应Web站点的AspMaxRequestEntityAllowed属性即可,它的单位是字节,默认是204800,改为你需要的值即可。比如改为最大上传20M,则修改此值为:20480000.如果实在不知道20M换成字节是多大,就用这个公式计算一下再修改吧:1024000*20(102400是100K,1024000是1M,以此类推,20M就是1024000*20=20480000)
3 编辑完记得重启IIS服务
1. net start w3svc (启动IIS服务)
2. iisreset /start
再加上下载不能超过4M的解决办法:
在 IIS 6.0 中,无法下载超过4M的附件时,可以按以下步骤解决:
1、先在服务里关闭 iis admin service 服务。
2、找到 windowssystem32inesrv 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)。
4、存盘,然后重启 iis admin service 服务。
MetaBase.xml是要求很严格的文件,,修改参数或格式一出错就会无法使用,,修改前最好备份,,如果忘了备份,修改又出错,, 还有补救方法:metabase.xml所在的目录下还有个history目录,里面存放的是metabase.xml文件在各个时间的备份。至此,解决办法也有了,就是从history目录下拷贝一份到inetsrv目录即可(但这样只能修回备份时间前的资料)。如果目录或文件没有就要到别的机拷一份过来,但是这样原先的配置就没了。
asp.net中导出excel数据的方法汇总?
1、由dataset生成
复制代码代码如下:
public void CreateExcel(DataSet ds,string typeid,string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders= “”, ls_item=””;
int i=0;
//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt=ds.Tables;
DataRow myRow=dt.Select(“”);
// typeid==”1″时导出为EXCEL格式文件;typeid==”2″时导出为XML格式文件
if(typeid==”1″)
{
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for(i=0;i colHeaders+=dt.Columns.Caption.ToString()+”t”;
colHeaders +=dt.Columns.Caption.ToString() +”n”;
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach(DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以t分割,结束时加回车符n
for(i=0;i ls_item +=row.ToString() + “t”;
ls_item += row.ToString() +”n”;
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item=””;
}
}
else
{
if(typeid==”2″)
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();
}
2、由datagrid生成
复制代码代码如下:
public void ToExcel(System.Web.UI.Control ctl)
{
HttpContext.Current.Response.AppendHeader(“Content-Disposition”,”attachment;filename=Excel.xls”);
HttpContext.Current.Response.Charset =”UTF-8″;
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType =”application/ms-excel”;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
用法:ToExcel(datagrid1);
3、这个用dataview
复制代码代码如下:
public void OutputExcel(DataView dv,string str)
{
//
// TODO: 在此处添加构造函数逻辑
//
//dv为要输出到Excel的数据,str为标题名称
GC.Collect();
Application excel;// = new Application();
int rowIndex=4;
int colIndex=1;
_Workbook xBk;
_Worksheet xSt;
excel= new ApplicationClass();
xBk = excel.Workbooks.Add(true);
xSt = (_Worksheet)xBk.ActiveSheet;
//
//取得标题
//
foreach(DataColumn col in dv.Table.Columns)
{
colIndex++;
excel.Cells = col.ColumnName;
xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
}
//
//取得表格中的数据
//
foreach(DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach(DataColumn col in dv.Table.Columns)
{
colIndex ++;
if(col.DataType == System.Type.GetType(“System.DateTime”))
{
excel.Cells = (Convert.ToDateTime(row.ToString())).ToString(“yyyy-MM-dd”);
xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
if(col.DataType == System.Type.GetType(“System.String”))
{
excel.Cells = “‘”+row.ToString();
xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
}
else
{
excel.Cells = row.ToString();
}
}
}
//
//加载一个合计行
//
int rowSum = rowIndex + 1;
int colSum = 2;
excel.Cells = “合计”;
xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment = XlHAlign.xlHAlignCenter;
//
//设置选中的部分的颜色
//
xSt.get_Range(excel.Cells,excel.Cells).Select();
xSt.get_Range(excel.Cells,excel.Cells).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
//
//取得整个报表的标题
//
excel.Cells = str;
//
//设置整个报表的标题格式
//
xSt.get_Range(excel.Cells,excel.Cells).Font.Bold = true;
xSt.get_Range(excel.Cells,excel.Cells).Font.Size = 22;
//
//设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells,excel.Cells).Select();
xSt.get_Range(excel.Cells,excel.Cells).Columns.AutoFit();
//
//设置整个报表的标题为跨列居中
//
xSt.get_Range(excel.Cells,excel.Cells).Select();
xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
//
//绘制边框
//
xSt.get_Range(excel.Cells,excel.Cells).Borders.LineStyle = 1;
xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight = XlBorderWeight.xlThick;//设置左边线加粗
xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight = XlBorderWeight.xlThick;//设置上边线加粗
xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight = XlBorderWeight.xlThick;//设置右边线加粗
xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight = XlBorderWeight.xlThick;//设置下边线加粗
//
//显示效果
//
excel.Visible=true;
//xSt.Export(Server.MapPath(“.”)+””+this.xlfile.Text+”.xls”,SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);
xBk.SaveCopyAs(Server.MapPath(“.”)+””+this.xlfile.Text+”.xls”);
ds = null;
xBk.Close(false, null,null);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xBk = null;
excel = null;
xSt = null;
GC.Collect();
string path = Server.MapPath(this.xlfile.Text+”.xls”);
System.IO.FileInfo file = new System.IO.FileInfo(path);
Response.Clear();
Response.Charset=”GB2312″;
Response.ContentEncoding=System.Text.Encoding.UTF8;
// 添加头信息,为”文件下载/另存为”对话框指定默认文件名
Response.AddHeader(“Content-Disposition”, “attachment; filename=” + Server.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader(“Content-Length”, file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = “application/ms-excel”;
// 把文件流发送到客户端
Response.WriteFile(file.FullName);
// 停止页面的执行
Response.End();
}
导入、导出EXCEL中的一些问题汇总
一、在项目中的添加引用:
右击项目资源管理器的引用–>添加引用–>选择.NET选项卡–>选择Microsoft.Office.Interop.Excel–>确定;
在选择时注意一下.NET组件的版本号,本例的12.0.0.0是Office2007的版本:
二、在项目中使用Microsoft.Office.Interop.Excel:
如果想使用Microsoft.Office.Interop.Excel,首先需要在项目中引用命名空间:
using Microsoft.Office.Interop.Excel;
三、建立Excel.Application相关对象
复制代码代码如下:
//建立Application对象
Microsoft.Office.Interop.Excel.Application myExcel = new Application();
//建立Workbooks对象
Workbooks myBooks = myExcel.Application.Workbooks;
//建立一个System.Reflection.Missing的object对象
object oMissing = System.Reflection.Missing.Value;
四、打开或新建Excel的book文件
复制代码代码如下:
//打开Excel文件,注意里的“ExccelFilePath”为Excel文件在服务器上的物理地址,包括文件名
Workbook myBook = myBooks.Open(ExccelFilePath,oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
//新建Workseet对象,,此处为要操作的工作表 ,当前要操作的工作表的获取方法有两种:使用工作表的索引值或使用工作表的名称,名称默认为:“sheet1”/“Sheet2”等
Worksheet mySheet = (Worksheet)myBook.Worksheets;
//如果是新建EXCEL工作簿,需要 设置如下两行内容,以保证工作簿中有一个工作表,
Workbook workbook1 = excel1.Workbooks.Add(true);
Worksheet mySheet= (Worksheet)workbook1.Worksheets;
//设置EXCEL对象是否显示界面,默认为false不显示界面
myExcel.Visble=true;
五、一些比较重要的针对Excel的操作
1、获取Range对象
①、获取一个单元格的Range对象:
复制代码代码如下:
//选择第一行、第一列的单元的单元格为Range对象
Range r = (Excel.Range)mySheet.Cells;
//选择多个连续的单元格为Range对象
Range r=(Excel.Range)Range.get_Range(“A1:F3”)
②、给单元格赋值或取出单元格的值:
复制代码代码如下:
//已选择了Range对象的赋值:
r.Text=”中国”;
//未选择Range对象的赋值:
mySheet.Cells.Text=”中国”;
//已选择了Range对象的取值:
String strValue= r.Text;
//未选择Range对象的取值:
String strValue= mySheet.Cells.Text;
③、给单元格设置边框
复制代码代码如下:
mySheet.Cells.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, null);//画线
④、合并单元格
复制代码代码如下:
//合并单元格前先要将要合并的单元格选择为Range对象
Range r=Range.get_Range(“A1:F3”);
//然后现设置合并单元格
r.MergeCells = true;
⑤、设置单元格的字体、字号、背景色等属性
复制代码代码如下:
mySheet.Cells.Font.Name = “黑体”;
mySheet.Cells.Font.Size = 20;
mySheet.Rows.RowHeight = 40;
mySheet.Cells.Interior.Color = Color.FromArgb(224, 224, 224);//设置颜色
⑥、删除一行:
复制代码代码如下:
//首先获取要删除的行的Range
Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)mySheet.Rows, Type.Missing];
//注意删除行后删除后的行号被下面的行替换,如果逐行删除,请先从最大的行号往最小的行号删除
range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp);
⑦、获取有数据的行数
复制代码代码如下:
int rowsint = mySheet.UsedRange.Cells.Rows.Count;
六、EXCEL文件的保存与退出
1、EXCEL的保存与退出
复制代码代码如下:
myBook.Save();
myBooks.Close();
myExcel.Quit();
2、EXCEL指定文件保存
复制代码代码如下:
myBook.Close(true, FilePath +_file_Name, null);
七、释放EXCLE对象的资源与结束EXCEL 进程
关于这方面内容有好多网友都在讲多种方法,经过本人实践,以下方面才能真正做到结束EXCEL的任务进程:
1、将所有以上对EXCEL的操作放到一个方法中,
2、在操作EXCEL后,即时将不使用对象一一释放并赋null值:
复制代码代码如下:
System.Runtime.InteropServices.Marshal.ReleaseComObject(mysheet);
mysheet=null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
myBook=null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBooks);
myBooks=null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myExcel=null;
3、再新建一个方法,并以该方法中执行上面新建的操作EXCEL方法,并在执行完操作EXCEL方法的后面添加GC.Collect():
复制代码代码如下:
//下面方法中OutPutEXCEL()方法是输出EXCEL文件的对EXCEL 操作的方法
private void killExcel()
{
outPutEXCEL();
GC.Collect();
GC.WaitForPendingFinalizers();
}
好多网友都在介绍使用GC.Collect()释放EXCEL占用的资源来结束EXCEL进行,如果将“GC.Collect();”与操作EXCEL的业务写在一个程序块中,“GC”是永远不能结束EXCEL进程的,在WEB应用程序中,这种现象是很可怕的事情。原因是GC不会清理本程序块中的垃圾内存的。
4、在业务事件中调用killEXCEL()方法:
复制代码代码如下:
protected void LinkButton3_Click(object sender, EventArgs e)
{
//导出EXCEL
killExcel();
}
八、一些权限的基本设置:
使用以上方法在开发环境中调试程序没有一点问题,等发布到服务器上后,程序还是不能正常运行,需要进行如下的权限设置:
.NET导出Excel遇到的80070005错误的解决方法:
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005基本上.net导出excel文件,都需要如此配置一下,不配置有的时候没错,而配置后基本应该不会出错。
具体配置方法如下:
① 在服务器上安装office的Excel软件.
② 在”开始”->”运行”中输入dcomcnfg.exe启动”组件服务”
③ 依次双击”组件服务”->”计算机”->”我的电脑”->”DCOM配置”
④ 在”DCOM配置”中找到”Microsoft Excel 应用程序”,在它上面点击右键,然后点击”属性”,弹出”Microsoft Excel 应用程序属性”对话框
⑤ 点击”标识”标签,选择”交互式用户”
⑥ 点击”安全”标签,在”启动和激活权限”上点击”自定义”,然后点击对应的”编辑”按钮,在弹出的”安全性”对话框中填加一个”NETWORK SERVICE”用户(注意要选择本计算机名),并给它赋予”本地启动”和”本地激活”权限.
⑦ 依然是”安全”标签,在”访问权限”上点击”自定义”,然后点击”编辑”,在弹出的”安全性”对话框中也填加一个”NETWORK SERVICE”用户,然后赋予”本地访问”权限.
⑧ 如果交互式用户设置后出现错误8000401a,可取消交互式用户,指定为administratr,可暂时解决此问题。进一步的解决方式还有待探讨。
⑨ 采用第8点的设置后,打开Excel可能会出现“无法使用对象引用或链接”,并且不能进行单元格粘贴。原因不明,取消设置后。
ASP.NET页面间数据传递的几种方法?
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer。
一、QueryString
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。
这种方法的优点:1.使用简单,对于安全性要求不高时传递数字或是文本值非常有效。
这种方法的缺点:1.缺乏安全性,由于它的值暴露在浏览器的URL地址中的。
2.不能传递对象。
使用方法:1.在源页面的代码中用需要传递的名称和值构造URL地址。
2.在源页面的代码用Response.Redirect(URL);重定向到上面的URL地址中。
3.在目的页面的代码使用Request.QueryString;取出URL地址中传递的值。
例子:(1)a.aspx
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = “b.aspx?name=” + Label1.Text;
Response.Redirect(s_url);
}
(2)b.aspx
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString;
}
二、Session
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
优点:1.使用简单,不仅能传递简单数据类型,还能传递对象。
2.数据量大小是不限制的。
缺点:1.在Session变量存储大量的数据会消耗较多的服务器资源。
2.容易丢失。
使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Session变量:Session=”Value(Or Object)”;
2.在目的页面的代码使用Session变量取出传递的值。Result = Session
注意:session不用时可以销毁它,销毁的方法是:清除一个:Session.Remove(“session名”);
清除所有:Session.Clear();
例子:(1)a.aspx
private void Button1_Click(object sender, System.EventArgs e)
{
Session = Label.Text;
}
(2)b.aspx
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session.ToString();
}
三、Cookie
这个也是大家常使用的方法,Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。所以Cookie也可以在页面间传递值。Cookie通过HTTP头在浏览器和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。
与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。
优点:1.使用简单,是保持用户状态的一种非常常用的方法。比如在购物网站中用户跨多个页面表单时可以用它来保持用户状态。
缺点:1.常常被人认为用来收集用户隐私而遭到批评。
2.安全性不高,容易伪造。
使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Cookie对象:
HttpCookie objCookie = new HttpCookie(“myCookie”,”Hello,Cookie!”);
Response.Cookies.Add(cookie);
2.在目的页面的代码使用Cookie对象取出传递的值:Result = Request.Cookies.Value;
例子:(1)a.aspx
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie objCookie = new HttpCookie(“myCookie”,”Hello,Cookie!”);
Response.Cookies.Add(objCookie);
}
(2)b.aspx
string myName1Value;
myName1Value = Request.Cookies.Value;
asp怎么固定表格尺寸?
web文档中怎样调整表格,网页中修改变表格大小的方法
1、动态后台的话可以在网站后台页面编辑,调整表格的大小;
2、可以采用在网页源代码里修改控制表格大小属性的属性值
3、采用CSS样式控制表格大小;
建议:如果不是很懂代码的话,建议找程序猿处理。