我想把数据导到Excel里,并保存在服务器一指定位置,用以下的方法,可是服务器上的office如
果是office2000和officeXp两种版本saveas的参数差一个,所以会出错,这样让客户极为恼火,不能随便装在哪台机器上,老板的脸色也...哪位老大能帮解决一下这个问题,小弟不胜感激!分不够再加,在线等待...
Excel.WorkbookClass oWB;
oWB.SaveAs(...)
果是office2000和officeXp两种版本saveas的参数差一个,所以会出错,这样让客户极为恼火,不能随便装在哪台机器上,老板的脸色也...哪位老大能帮解决一下这个问题,小弟不胜感激!分不够再加,在线等待...
Excel.WorkbookClass oWB;
oWB.SaveAs(...)
http://community.csdn.net/Expert/topic/3077/3077526.xml?temp=.8746912
http://www.dev-club.com/club/bbs/showEssence.asp?id=26350http://dev.csdn.net/Develop/article/18/18623.shtm
http://community.csdn.net/Expert/topic/3112/3112296.xml?temp=.926861
http://dotnet.aspx.cc/ShowDetail.aspx?id=BF0A54F9-C7C7-4200-BD9A-802AC1F5DE50
http://expert.csdn.net/Expert/TopicView1.asp?id=2928057www.foxhis.com/powermjtest/
原文代码:
private void Button1_Click(object sender, System.EventArgs e)
{
//写入Excel的方法:
//定义需要参数。
string SourceFile="Data.XLS"; //源文件名称。
string TemplatePath=Server.MapPath("ExcelTemplate"); //存放源文件的文件夹路径。
string DownloadPath=Server.MapPath("ExcelDownload"); //副本的文件夹路径。
//副本的文件名。
string TempFileName = DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS";
object missing = System.Reflection.Missing.Value;
Excel.Application myExcel=new Excel.Application();
//打开新文件
myExcel.Application.Workbooks.Open(TemplatePath+"\\"+SourceFile,missing,missing,missing,missing,
missing,missing,missing,missing,missing,missing, missing,missing);
Excel.Workbook myBook=myExcel.Workbooks[1];
Excel.Worksheet curSheet = (Excel.Worksheet)myBook.Sheets[2];
string DownloadFilePath=DownloadPath+"\\"+TempFileName;
int i=0;
while (i<=10)
{
myExcel.Cells[4+i,2]=i.ToString();
myExcel.Cells[4+i,3]=i.ToString();
myExcel.Cells[4+i,4]=i.ToString();
myExcel.Cells[4+i,5]=i.ToString();
myExcel.Cells[4+i,6]=i.ToString();
i++;
}
myBook.Saved=true;
//myBook.SaveAs(DownloadFilePath,missing,"","",false,false,Excel.XlSaveAsAccessMode.xlNoChange,1,false,missing,missing);
myBook.PrintPreview(0);
//myBook.PrintOut(missing,missing,missing,missing,missing,missing,missing,missing);
myBook.Close(false, null,null);
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
myExcel = null;
GC.Collect();
//Response.Redirect("ExcelDownload//"+TempFileName); //下载文件
}
存储时出错就调用另一种存储方式,不出错就通过
另外同意wu621的看法,如果对导出的excel格式没有要求(就是说文本形式的excel也可以的话,不用此文件作为数据库),可以用owc导出html内容的内容,保存成.xls文件即可。
System.Reflection,楼主会用吧。
我现在的报表都是这样做,不过只OFFICE XP或以上版本才行。
生成XML文件比XLS文件要大很多:(
------------------------------------------------------------------
回复人: goody9807() ( ) 信誉:100 2005-01-13 09:37:00 得分: 0 用流格式生成Excel文件 动态向文件中写东西
能发个关于Excel结构描述的文件吗?
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel"; //设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
二、DataGrid 的数据放不下,建议生成 .CSV 文件,纯文本的,用指定的字符分隔列就行,还省去了office版权的麻烦,但用excel打开和打开 .xls 一样方便。
真的吗??
OfficeXP以上的版是支持XML。
只要你了解XML的格式,你就根本不用EXCEL。
如果你了解Excel File Format根本不用EXCEL也可以操作EXCEL文件。
不要忘了最终是以文件方式来保存的.
其实帮电信做帐务报表,不只是你们:),电信不同业务的帐务系统多得是。
不要动不动就搬出来。
/// 另存。
/// </summary>
/// <param name="fileName">要另存的文件名</param>
public void SaveAs(string fileName)
{
// 获得方法信息
Type documentType = mApp.ActiveDocument.GetType();
MethodInfo method = documentType.GetMethod("SaveAs"); // 获得参数信息
int paramCount = method.GetParameters().Length;
object[] paramArray = new object[paramCount];
// 填充参数
paramArray[0] = fileName;
for (int i=1; i<paramCount; i++)
{
paramArray[i] = mMissing;
} // 调用方法
method.Invoke(mApp.ActiveDocument, paramArray); // 下列代码有兼容性问题,暂屏蔽
// mApp.ActiveDocument.SaveAs(ref fName, ref mMissing, ref mMissing, ref mMissing, ref mMissing,
// ref mMissing, ref mMissing, ref mMissing, ref mMissing, ref mMissing, ref mMissing); mFileName = fileName;
mSaved = true;
}
to FJGoodGood(_FJ_强中强):老兄,你是不是解决了此个难题,能否将你的代码让小弟参考一下,先谢了..
1)mApp 是一个 Word.Application对象(我封装的类的一个私有字段,你可以把它改造成Excel.Application对象)。
2)mMissing 是一个公共缺省参数,用C#搞过Office开发的朋友都知道,它的值是Type.Missing。
3)mFileName 和 mSave 是两个私有状态变量,mFileName代表最后一次保存所使用的文件名,mSave表示是否已经保存。
4)基本上这个类你可以只要修改Excel.Application即可
你可以看一下这儿:
http://community.csdn.net/Expert/topic/3730/3730737.xml?temp=.4821894