找回密码
 立即注册

QQ登录

只需一步,快速开始

cngrain

中级会员

32

主题

118

帖子

656

积分

中级会员

积分
656

活字格认证

cngrain
中级会员   /  发表于:2012-3-28 09:15  /   查看:7678  /  回复:11
1、导入Excel到fpspread中,然后填充数据,再导出excel。
在这个过程中,如何保证excel的样式不变(主要是边框线),并保证导出的excel的默认的打印格式与导入的excel设置好的格式一致?

11 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-28 11:05:00
沙发

回复 1# cngrain 的帖子

cngrain 你好

关于导入Excel之后边线变粗的行为是Spread的默认行为,再次导出为Excel之后边线还是和原有Excel一样

通过FpSpread1.OpenExcel(Server.MapPath("Book1.xlsx"));导入之后打印设置默认是保留的,你可以通过FpSpread1.Sheets[0].PrintInfo访问Excel中的打印设置,再次导出为Excel还是会保存原来的打印设置
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-28 11:27:00
板凳

模板

测试模板见附件

tst1.rar

6.31 KB, 下载次数: 84

rar

回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-28 11:27:00
地板

模板

测试模板见附件
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-28 11:27:00
5#

模板

测试模板见附件
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-28 12:13:00
6#

回复 5# cngrain 的帖子

Spread for Asp.net在画线是为了避免Border和GridLine之间发生冲突,会将线画的粗一个像素,如果想实现在浏览器中看到的和Excel中看到一样的效果,需要在OpenExcel之后对边线进行重新设置,如果Excel中设置的边线本来就比较复杂,那么重新设置边线的代码就会比较复杂,针对你发来的测试Excel文件可以通过下面的代码来实现:
  1.         protected void Open_Click(object sender, EventArgs e)
  2.         {
  3.             FpSpread1.OpenExcel(Server.MapPath("tst1.xls"));
  4.             FarPoint.Web.Spread.SheetView view = FpSpread1.ActiveSheetView;
  5.             for (int i = 0; i < view.RowCount; i++)
  6.             {
  7.                 for (int j = 0; j < view.ColumnCount; j++)
  8.                 {
  9.                     view.Cells[i, j].Border.BorderSizeLeft = 1;
  10.                     view.Cells[i, j].Border.BorderSizeTop = 1;
  11.                     view.Cells[i, j].Border.BorderSizeRight = 1;
  12.                     view.Cells[i, j].Border.BorderSizeBottom = 1;
  13.                 }
  14.             }
  15.             
  16.         }
  17.         protected void Save_Click(object sender, EventArgs e)
  18.         {
  19.             FarPoint.Web.Spread.SheetView view = FpSpread1.ActiveSheetView;
  20.             for (int i = 0; i < view.RowCount; i++)
  21.             {
  22.                 for (int j = 0; j < view.ColumnCount; j++)
  23.                 {
  24.                     view.Cells[i, j].Border.BorderSizeLeft = 2;
  25.                     view.Cells[i, j].Border.BorderSizeTop = 2;
  26.                     view.Cells[i, j].Border.BorderSizeRight = 2;
  27.                     view.Cells[i, j].Border.BorderSizeBottom = 2;
  28.                 }
  29.             }
  30.             FpSpread1.SaveExcel(Server.MapPath("test.xls"));
  31.             for (int i = 0; i < view.RowCount; i++)
  32.             {
  33.                 for (int j = 0; j < view.ColumnCount; j++)
  34.                 {
  35.                     view.Cells[i, j].Border.BorderSizeLeft = 1;
  36.                     view.Cells[i, j].Border.BorderSizeTop = 1;
  37.                     view.Cells[i, j].Border.BorderSizeRight = 1;
  38.                     view.Cells[i, j].Border.BorderSizeBottom = 1;
  39.                 }
  40.             }
  41.         }
复制代码
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-28 12:20:00
7#
ok,问题已解决,跟我的解决思路是一样的,有没有直接设置好控件的方式,因为我表格里的线的粗细可能不均匀。
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-28 12:21:00
8#
请问我是否可以从第二行第二列的单元格开始来绑定数据?有没有什么高效的数据绑定方法?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-28 12:24:00
9#

回复 7# cngrain 的帖子

现在只能遍历每一个单元格,还没有捷径可走
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-28 12:33:00
10#

回复 8# cngrain 的帖子

因为你这种应用属于先定义模板,然后填充数据,所以没法直接设置DataSource属性来绑定数据源,还得通过代码来设置单元格的值
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部