string filename = "XXXXXX-" + UserInfo.EmpName; string m_ApplicationPath = Request.ApplicationPath; //将模板文件copy到新位置,建议实际开发时用相对路径,如
//Application.StartupPath.Trim() + "\\report\\normal.xls"; //判断是否复制成功
string m_newPath = change(System.Configuration.ConfigurationManager.AppSettings["oldPath"] + "normal_all.xls", filename); if (string.IsNullOrEmpty(m_newPath))
{
return;
}
//打开复制后的文件 object missing = Missing.Value; Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application(); //打开新文件
myExcel.Application.Workbooks.Open(m_newPath, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); //将Excel显示出来
myExcel.Visible = true; Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet; myExcel.Cells[1, 1] = "XXX报表"; myExcel.Cells[2, 1] = "报表日期:" + DateTime.Today.ToString("yyyy年MM月dd日"); //合并单元格
Microsoft.Office.Interop.Excel.Range rH = worksheet.get_Range("A" + (m_row1 + i * 4), "A" + (m_row2 + i*4));
rH.Merge(0);
rH.Font.Bold = true;//粗体
rH.Font.Size = 10;
rH.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
rH.Cells.VerticalAlignment = XlHAlign.xlHAlignCenter; //将列标题和实际内容选中
Microsoft.Office.Interop.Excel.Workbook myBook = myExcel.Workbooks[0]; //保存修改 myBook.Save(); myBook.Close(missing, missing, missing); myExcel = null; worksheet = null;
在本机调试的时候正常,将一个EXCEL模板复制到一个新的目录下,进行读写的操作。
在本机调试时,可以看到新复制的Excel被打开,数据被写入。
但是发布后,却看不到被打开的Excel,但是文件已经被复制到新目录下了。
开发用的VS2005和SQL2005
把dataset数据保存到excel
public void CreateExcel(DataSet ds, 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 = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
}
resp.Write(colHeaders);
//向HTTP输出流中写入取得的数据信息
//逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
我的笔记本是VISTA系统,开发环境全,OFFICE2003
发布的机器是XP,开发环境全,OFFICE2003
不知道我的代码有问题否,从网上找的。
错误信息如下无法找到“C:\TaxWebTemp\\01029217基本信息2009-11-21.xls”。请检查文件名的拼写,并检查文件位置是否正确。如果您正试图从“文件”菜单上最近使用的文件列表中打开文件,请确认文件未被重命名、移动或删除。