C#出报表,然后导出EXCEL的问题

liuxiuming 2010-11-03 11:27:49
protected void IB_ExportData_Click(object sender, EventArgs e)
{
RGGoodsDemand.Columns.FindByUniqueName("GoodsCode").Visible = false;
string fileName = RCB_Company.SelectedItem.Text;
if (EndTime == DateTime.MinValue)
fileName += WebControl.GetNowTime().ToShortDateString() + ".xls";
else
fileName += EndTime.ToShortDateString() + "-" + EndTime.ToShortTimeString() + ".xls";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + Server.UrlEncode(fileName) + "\"");
RGGoodsDemand.ExportSettings.ExportOnlyData = true;
RGGoodsDemand.ExportSettings.IgnorePaging = true;
RGGoodsDemand.ExportSettings.FileName = fileName;
RGGoodsDemand.ExportSettings.ExportOnlyData = true;
RGGoodsDemand.MasterTableView.ExportToExcel();
}

以上是导出EXCEL的代码

现在我想在出报表后,手动的改一些报表中的值,但导出来后的值依然是最初生成时的值,改动后的值没有导出到EXCEL中,怎么办?谢谢
...全文
184 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
速 战 2010-11-04
  • 打赏
  • 举报
回复
我是从自己项目中摘出来的,也可以说是拷贝出来的.不过是针对你说的问题.
速 战 2010-11-04
  • 打赏
  • 举报
回复
怎么是答非所问?要不就是你说的不清楚,你要导出报表,导出的报表是你从数据库中读出来的,但是你又不想改数据库,那上面这个方法就可以做到.是人工的去操作EXCEL
deyygywxf 2010-11-03
  • 打赏
  • 举报
回复
那是因为导出时的报表仍然是改之前的 ,数据实际上没有变,再加个操作改动报表后保存就可以了
xiaotiange 2010-11-03
  • 打赏
  • 举报
回复
那是因为导出时的报表仍然是改之前的 ,数据实际上没有变,再加个操作改动报表后保存就可以了
hongjiaoli 2010-11-03
  • 打赏
  • 举报
回复
改动报表中的值之后,先确定是否保存到数据库,确定后,在执行导出Excle的函数。
liuxiuming 2010-11-03
  • 打赏
  • 举报
回复
楼上在哪拷贝来的?答非所问啊
速 战 2010-11-03
  • 打赏
  • 举报
回复

//你是要针对EXCEL进行操作吗?
//1。步骤1, 打开你要进行操作的EXCEL,获取EXCEL明细,并且生成二维数组
#region 返回选定区域
/// <summary>
/// 2010-05-20,黄飞翔 /// 返回选定区域
/// 例:GetRange(ws, StartX, StartY, EndX, EndY);
/// </summary>
/// <param name="ws">工作表</param>
/// <param name="StartX">起始位置X</param>
/// <param name="StartY">起始位置Y</param>
/// <param name="EndX">结束位置X</param>
/// <param name="EndY">结束位置Y</param>
/// <returns>返回选定区域</returns>
public Excel.Range GetRange(Excel.Worksheet ws, int StartX, int StartY, int EndX, int EndY)
{
Excel.Range range = ws.get_Range(ws.Cells[StartX, StartY], ws.Cells[EndX, EndY]);
return range;
}
#endregion


#region 根据工作表获得,明细对像列表
/// <summary>
/// 根据工作表获得,明细对像列表
/// </summary>
/// <param name="helper"></param>
/// <param name="ws"></param>
/// <returns></returns>
private ArrayList GetDetailData(Excel.Worksheet ws)
{
Excel.Range range = GetRange(ws, 1, 1, 5000, CodeList.Count + 3);
object[,] Value = (object[,])range.Value2;
}
#endregion
步骤2:二维数组 Value[0,1]分别对应excel的位置,这个表示0行1列的值,具体根据你的业务逻辑,把需要更改的行列替换成你需要的新数组 比如 NewValue,然后调用下面方法,再重新赋值新的EXCEL
/// <summary>
/// 赋值excel
/// </summary>
/// <param name="ws">工作表</param>
/// <param name="values">待插入的二维数组</param>
/// <param name="x1">开始行</param>
/// <param name="y1">开始列</param>
/// <param name="rowCount">需要插入的行数</param>
/// <param name="columnCount">需要插入的列数</param>
public void SetCellsValue(Excel.Worksheet ws, object[,] values, int x1, int y1, int rowCount, int columnCount)
{
try
{
Excel.Range ra = null;
ra = (Excel.Range)ws.Cells[x1, y1];
ra = ra.get_Resize(rowCount, columnCount);
ra.Value = values;
}
catch (Exception ee)
{
Other.WriteMessage(ee.Message);
}


}

//步骤3:保存新的excel.并且导出

速 战 2010-11-03
  • 打赏
  • 举报
回复
你是要针对EXCEL进行操作吗?

1。步骤1, 打开你要进行操作的EXCEL,获取EXCEL明细,并且生成二维数组
#region 返回选定区域
/// <summary>
/// 2010-05-20,黄飞翔 /// 返回选定区域
/// 例:GetRange(ws, StartX, StartY, EndX, EndY);
/// </summary>
/// <param name="ws">工作表</param>
/// <param name="StartX">起始位置X</param>
/// <param name="StartY">起始位置Y</param>
/// <param name="EndX">结束位置X</param>
/// <param name="EndY">结束位置Y</param>
/// <returns>返回选定区域</returns>
public Excel.Range GetRange(Excel.Worksheet ws, int StartX, int StartY, int EndX, int EndY)
{
Excel.Range range = ws.get_Range(ws.Cells[StartX, StartY], ws.Cells[EndX, EndY]);
return range;
}
#endregion


#region 根据工作表获得,明细对像列表
/// <summary>
/// 根据工作表获得,明细对像列表
/// </summary>
/// <param name="helper"></param>
/// <param name="ws"></param>
/// <returns></returns>
private ArrayList GetDetailData(Excel.Worksheet ws)
{
Excel.Range range = GetRange(ws, 1, 1, 5000, CodeList.Count + 3);
object[,] Value = (object[,])range.Value2;
}
#endregion
步骤2:二维数组 Value[0,1]分别对应excel的位置,这个表示0行1列的值,具体根据你的业务逻辑,把需要更改的行列替换成你需要的新数组 比如 NewValue,然后调用下面方法,再重新赋值新的EXCEL
/// <summary>
/// 赋值excel
/// </summary>
/// <param name="ws">工作表</param>
/// <param name="values">待插入的二维数组</param>
/// <param name="x1">开始行</param>
/// <param name="y1">开始列</param>
/// <param name="rowCount">需要插入的行数</param>
/// <param name="columnCount">需要插入的列数</param>
public void SetCellsValue(Excel.Worksheet ws, object[,] values, int x1, int y1, int rowCount, int columnCount)
{
try
{
Excel.Range ra = null;
ra = (Excel.Range)ws.Cells[x1, y1];
ra = ra.get_Resize(rowCount, columnCount);
ra.Value = values;
}
catch (Exception ee)
{
Other.WriteMessage(ee.Message);
}


}

步骤3:保存新的excel.并且导出
ly_57944875 2010-11-03
  • 打赏
  • 举报
回复
保存到临时文件里面,然后再读出来!
liuxiuming 2010-11-03
  • 打赏
  • 举报
回复
RGGoodsDemand 是这个报表显示控件的名称,我是应该再保存一下这个?
liuxiuming 2010-11-03
  • 打赏
  • 举报
回复
回楼上各位,要改数据的这个列本来就不是要保存在数据库中,只是在页面上显示出来的。。。所以,我不知道怎么“保存”
josxhn 2010-11-03
  • 打赏
  • 举报
回复

xlBook.Save();
xlBook.Close(true , false , Missing.Value);
xlApp.Quit();

bourbon1795 2010-11-03
  • 打赏
  • 举报
回复
导出之前要保存下

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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