找回密码
 立即注册

QQ登录

只需一步,快速开始

191288065

注册会员

5

主题

21

帖子

54

积分

注册会员

积分
54
191288065
注册会员   /  发表于:2016-9-5 17:36  /   查看:3453  /  回复:4
本帖最后由 191288065 于 2016-9-5 17:51 编辑

------------------------------------------------------------------
问题1:sheet1.SaveHtmlRange疑问。
------------------------------------------------------------------
foreach (SheetView sheet in fp_Excel.Sheets)
{
     var htmlStream = new MemoryStream();
      sheet.SaveHtmlRange(0, 0, sheet.NonEmptyRowCount, sheet.NonEmptyColumnCount, false, false, htmlStream);
      var dd = StreamToBytes(htmlStream);
}

//var sheet1 = fp_Excel.Sheets[0];
//sheet1.SaveHtmlRange(0, 0, sheet1.NonEmptyRowCount, sheet1.NonEmptyColumnCount, false, false, "D:\\sheet1.html");

我想实现把某sheet转换成html流直接存储于数据库,没搞懂你的这个方法
public void SaveHtmlRange(int row, int column, int rowCount, int columnCount, bool rowHeaders, bool columnHeaders, Stream stream);
Stream stream参数什么意思?输出到这个参数里面,但是这个非ref,使用他提示流关闭。
----------------------------------------------------
问题2:使用sheet1.SaveHtmlRange转换为Html文件的时候样式变形,想过入下
----------------------------------------------------

excel样式

excel样式

转换为HTML样式:

网页格式

网页格式

宽度,样式变化了,这个有什么办法解决?

4 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-9-6 11:10:45
沙发
1.这个方法是保存SpreadSheet的特定范围的HTML格式到Stream流。参数中的Stream是System.IO.Stream。
是微软WinForms平台下提供的,不是我们产品自定义的数据结构。
该方法简单使用参考:
fpSpread1.ActiveSheet.SaveHtmlRange(0, 0, 3, 3, true, true, "D:\\samples\\spreadrange.html");

常用的Stream的子类有:
1) MemoryStream 存储在内存中的字节流
2) FileStream  存储在文件系统的字节流
3) NetworkStream 通过网络设备读写的字节流
4) BufferedStream 为其他流提供缓冲的流

有关该Stream的读写使用方法,建议你查阅微软的msdn。

2.在保存的时候,有可能会有格式的问题。
这个需要您提供这个有问题的文件,我们帮你看看。


请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
191288065
注册会员   /  发表于:2016-9-6 11:21:33
板凳
你好,第一个问题,我想咨询的是public void SaveHtmlRange(int row, int column, int rowCount, int columnCount, bool rowHeaders, bool columnHeaders, Stream stream),这个stream参数的作用,我不知道你这个有什么用途,另一个重载方式是路径那个我能理解,直接生成Html保存到指定路径,这个参数没有搞懂怎么用,
第二个问题,我随便找个excel保存格式都有问题
登记表.xls (23 KB, 下载次数: 157)
回复 使用道具 举报
191288065
注册会员   /  发表于:2016-9-6 11:23:52
地板
我看了你的回答,你说这个是把excel保存为HTML格式到Stream流,但是这个Stream根本没办法使用啊,
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-9-6 18:44:29
5#
191288065 发表于 2016-9-6 11:23
我看了你的回答,你说这个是把excel保存为HTML格式到Stream流,但是这个Stream根本没办法使用啊,

1.我理解您的需求是:拿到Stream并且保存到数据库。
这里使用的Stream是WinForms平台提供的,在调用SaveHtmlRange方法保存到Stream之后,它会自动关闭。这是平台的机制。
如果你想使用这个Stream基本思路就是,最初创建一个MemoryStream,然后调用SaveHtmlRange方法保存。之后打开这个MemoryStream读取里面的数据并创建一个新的Stream保存下来。
因此根据您的描述,推测是您的代码写的有问题。
建议您查阅msdn,了解Stream以及如何使用Stream读写,参考链接:https://msdn.microsoft.com/en-us/library/k3352a4t(v=vs.110).aspx
如果您在阅读msdn后写的代码依然有错,请将您的代码提供给我们,我们再帮您看看。

2.对于第二个问题,我使用您提供的excel文件进行测试,测试版本SpreadV9,无法重现您的问题。
步骤:
1.打开Spread设计器,将登记表.xlsx文件打开。
2.应用给Spread控件。
3.调用代码导出成html文件,代码:
fpSpread1.ActiveSheet.SaveHtmlRange(0, 0, 50, 50, true, true, "D:\\spreadrange.html");
Spread和Excel对比:
excel-spread.png
Spread和HTML文件用网页打开对比:
spread_print.png


请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部