请教一个导出数据到Excel模板的问题~~·急

freeboyesn 2010-01-18 09:32:50
今天写了一个导出数据到Excel模板的功能,在Vs自带服务器中运行没有问题,发布到IIS上之后出错:文件夹无写入权限或文件路径长度超过218,但是我检查过权限个年长度都没有问题,下面是代码,请高手帮忙看看问题出在哪里,,急
private void ExportExcelAndPrint(System.Data.DataTable dt, System.Data.DataTable dtTotal)
{
int pageSize = 2;//模板的行数
int OtherRow = 0;
//文件名
ExcelHelper eh = new ExcelHelper();

string NewFileName = Server.MapPath("~") + "/uploaded/" + "Packing.xls";

if (dt.Rows.Count > 0)
{
string sReportFile = Server.MapPath("~") + "\\Resources\\ReportTemplates\\tmp.xls";

//循环打印各页
Microsoft.Office.Interop.Excel.Application oExcel = null;
object objMissing = null;
Microsoft.Office.Interop.Excel.Workbook mybook = null;
Microsoft.Office.Interop.Excel.Sheets excelSheets = null;
Microsoft.Office.Interop.Excel.Worksheet xlsheet = null;
string sDeleteFile = null;
try
{
//创建0字节空临时文件
sDeleteFile = System.IO.Path.GetTempFileName();
File.Copy(sReportFile, sDeleteFile, true);
oExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
objMissing = System.Reflection.Missing.Value;
mybook = (Microsoft.Office.Interop.Excel.Workbook)oExcel.Workbooks.Open(sDeleteFile, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing);
excelSheets = mybook.Worksheets;
xlsheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(1);

//当记录多于1行时,修改Excel模板,添加新行
if (dt.Rows.Count > pageSize)
{
OtherRow = dt.Rows.Count - pageSize;
//修改模板,添加行
for (int k = 0; k < OtherRow; k++)
{
Microsoft.Office.Interop.Excel.Range range1 = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("A6", objMissing); ;
range1.Select();
range1.EntireRow.Insert(objMissing, objMissing);
}
}

Microsoft.Office.Interop.Excel.Range ex = null;
//部门
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("B3", objMissing);
ex.Value2 = this.ddlDepartment.SelectedItem.Text;
//年月日
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("B2", objMissing);
ex.Value2 = this.dfTime.SelectedDate.ToShortDateString();

int DoubleRow = 5;
for (int j = 0; j < dt.Rows.Count; j++)
{
//班次
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("A" + DoubleRow, objMissing);
ex.Value2 = dt.Rows[j]["班次"];
//香型
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("B" + DoubleRow, objMissing);
ex.Value2 = dt.Rows[j]["香型"];
//抽检总片数
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("C" + DoubleRow, objMissing);
ex.Value2 = dt.Rows[j]["抽检总片数"];
//不良片数
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("D" + DoubleRow, objMissing);
ex.Value2 = dt.Rows[j]["不良片数"];
//合格率
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("E" + DoubleRow, objMissing);
ex.Value2 = dt.Rows[j]["合格率"].ToString() + "%";

//行增加
DoubleRow += 1;
}
//Total抽检总片数
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("C" + (7 + OtherRow), objMissing);
ex.Value2 = dtTotal.Rows[0]["抽检总片数"];
//Total不良片数
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("D" + (7 + OtherRow), objMissing);
ex.Value2 = dtTotal.Rows[0]["不良片数"];
//Total合格率
ex = (Microsoft.Office.Interop.Excel.Range)xlsheet.get_Range("E" + (7 + OtherRow), objMissing);
ex.Value2 = dtTotal.Rows[0]["合格率"].ToString() + "%";

oExcel.DisplayAlerts = false;

mybook.SaveAs(NewFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

mybook = null;
xlsheet = null;
oExcel.Quit();


}
catch (System.Runtime.InteropServices.COMException err)
{
//this.MessageBox(err.Message, "系统提示");
throw new Exception(err.Message);
}
finally
{
try
{
mybook = null;
xlsheet = null;

oExcel.Quit();
if (sDeleteFile != null)
File.Delete(sDeleteFile);
}
catch { }
}
}
...全文
108 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeboyesn 2010-01-18
  • 打赏
  • 举报
回复
freeboyesn 2010-01-18
  • 打赏
  • 举报
回复
有高手帮帮忙吗

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧