找回密码
 立即注册

QQ登录

只需一步,快速开始

silenceyy2010

高级会员

3

主题

10

帖子

1585

积分

高级会员

积分
1585

活字格认证

最新发帖
silenceyy2010
高级会员   /  发表于:2013-4-22 16:51  /   查看:4498  /  回复:4
报错内容:error Saving Excel File
代码如下:
if (this.saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
        string myPath = this.saveFileDialog1.FileName;
        dgvPage3.SaveExcel(myPath);
        MessageBox.Show("数据下载成功!");
}
个人猜测可能是由于数据量有点大造成的
举例 (数据一共50列左右):
20行数据,100张照片,每张照片50k左右=》没问题。
1000行数据,无照片=》没问题。
20行数据,10张照片,每张200k左右=》没问题。

但是50行以上,50张照片,照片200k左右,就不行呢。。。
数据是从公司数据库取的,所以发不了demo给您~~

4 个回复

倒序浏览
silenceyy2010
高级会员   /  发表于:2013-4-22 16:58:00
沙发
今天突然想起来,是不是有这种可能:
Excel里插入图片的时候,如果图片是jpg格式的话,文件会很小,如果是bmp的话,文件就会很大。
由于文件太大了,所以报错了~~
我的代码是这样的:
if (File.Exists(dt.Rows[iRow][iCol].ToString()))
                        {
                            System.Drawing.Image image = System.Drawing.Image.FromFile(dt.Rows[iRow][iCol].ToString());
                            System.Drawing.Image newimage = new System.Drawing.Bitmap(image);
                            dgv.Sheets[0].Cells[iRow, iCol].Value = newimage;
                            dgv.Sheets[0].Rows[iRow].Height = 50;
                            image.Dispose();                           
                        }
是不是这句话写的有问题呢?   new System.Drawing.Bitmap(image);
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-22 17:47:00
板凳
回复 2楼silenceyy2010的帖子

关于图片格式问题,可以测试下保存成其他格式是否报错。
我的测试 Demo 中图片大小为 168K,生成五百行数据,可以正常保存成 excel。

8719.zip (367.7 KB, 下载次数: 65)
回复 使用道具 举报
silenceyy2010
高级会员   /  发表于:2013-4-23 08:47:00
地板
将照片格式进行转换后,问题已解决!
更正后代码如下:
if (File.Exists(dt.Rows[iRow][iCol].ToString()))
                        {
                            System.Drawing.Image image = System.Drawing.Image.FromFile(dt.Rows[iRow][iCol].ToString());
                            Bitmap bmp = new Bitmap(image);
                            MemoryStream ms = new MemoryStream();
                            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                            Image NewImage = Image.FromStream(ms);
                            dgv.Sheets[0].Cells[iRow, iCol].Value = NewImage;
                            dgv.Sheets[0].Rows[iRow].Height = 50;
                            image.Dispose();                 
                        }
更正后数据文件20-30M左右,下载完全没有问题,且速度很快~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-23 14:22:00
5#
回复 4楼silenceyy2010的帖子

感谢反馈问题结果。
有其他使用问题,欢迎继续交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部