导出Excel异常

问题描述

大家好,我通过一下代码导出Excel文件:如果outputPath:@"F:outputFormDataBase.xls");输出文件:F-outputFormDataBase.xls;如果outputPath:@"导出1.xls");直接提示response.WriteFile(fullFileName);未能找到文件:导出1.xls文件;请大家帮忙,谢谢!outputPath:保存路径dataSet:数据集deleteOldFile:是否删除已有的老文件//保存excepublicvoidDataSetToLocalExcel(DataSetdataSet,stringoutputPath,booldeleteOldFile){if(deleteOldFile){if(System.IO.File.Exists(outputPath)){System.IO.File.Delete(outputPath);}}//CreatetheExcelApplicationobjectMicrosoft.Office.Interop.Excel.ApplicationClassexcelApp=newMicrosoft.Office.Interop.Excel.ApplicationClass();//CreateanewExcelWorkbookMicrosoft.Office.Interop.Excel.WorkbookexcelWorkbook=excelApp.Workbooks.Add(Type.Missing);intsheetIndex=0;//CopyeachDataTableforeach(System.Data.DataTabledtindataSet.Tables){//CopytheDataTabletoanobjectarrayobject[,]rawData=newobject[dt.Rows.Count+1,dt.Columns.Count];//Copythecolumnnamestothefirstrowoftheobjectarrayfor(intcol=0;col<dt.Columns.Count;col++){rawData[0,col]=dt.Columns[col].ColumnName;}//Copythevaluestotheobjectarrayfor(intcol=0;col<dt.Columns.Count;col++){for(introw=0;row<dt.Rows.Count;row++){rawData[row+1,col]=dt.Rows[row].ItemArray[col];}}//CalculatethefinalcolumnletterstringfinalColLetter=string.Empty;stringcolCharset="ABCDEFGHIJKLMNOPQRSTUVWXYZ";intcolCharsetLen=colCharset.Length;if(dt.Columns.Count>colCharsetLen){finalColLetter=colCharset.Substring((dt.Columns.Count-1)/colCharsetLen-1,1);}finalColLetter+=colCharset.Substring((dt.Columns.Count-1)%colCharsetLen,1);//CreateanewSheetMicrosoft.Office.Interop.Excel.WorksheetexcelSheet=(Microsoft.Office.Interop.Excel.Worksheet)excelWorkbook.Sheets.Add(excelWorkbook.Sheets.get_Item(++sheetIndex),Type.Missing,1,Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);excelSheet.Name=dt.TableName;Microsoft.Office.Interop.Excel.Rangera=excelSheet.get_Range(excelApp.Cells[3,1],excelApp.Cells[3,1]);ra.ColumnWidth=20;//FastdataexporttoExcelstringexcelRange=string.Format("A1:{0}{1}",finalColLetter,dt.Rows.Count+1);excelSheet.get_Range(excelRange,Type.Missing).Value2=rawData;//MarkthefirstrowasBOLD((Microsoft.Office.Interop.Excel.Range)excelSheet.Rows[1,Type.Missing]).Font.Bold=true;}//excelApp.Application.AlertBeforeOverwriting=false;excelApp.Application.DisplayAlerts=false;//SaveandClosetheWorkbookexcelWorkbook.SaveAs(outputPath,Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);excelWorkbook.Close(true,Type.Missing,Type.Missing);excelWorkbook=null;//ReleasetheApplicationobjectexcelApp.Quit();excelApp=null;//CollecttheunreferencedobjectsGC.Collect();GC.WaitForPendingFinalizers();this.DownLoadExcel1(outputPath);}//下载privatevoidDownLoadExcel1(stringfullFileName){HttpResponseresponse=HttpContext.Current.Response;response.Clear();response.WriteFile(fullFileName);stringhttpHeader="attachment;filename="+fullFileName;response.AppendHeader("Content-Disposition",httpHeader);response.Charset="utf-8";response.ContentEncoding=System.Text.Encoding.Default;response.ContentType="application/vnd.ms-excel";System.IO.StringWriteroStringWriter=newSystem.IO.StringWriter();System.Web.UI.HtmlTextWriteroHtmlTextWriter=newSystem.Web.UI.HtmlTextWriter(oStringWriter);response.BufferOutput=true;response.AppendToLog(DateTime.Now.ToString()+"导出Excel文件");response.Flush();System.IO.File.Delete(fullFileName);//删除临时文件//response.End();HttpContext.Current.ApplicationInstance.CompleteRequest();}

解决方案

解决方案二:
遇到问题先分解,一步一步测试你后面的路径跟前面的差的太多既有中文,又用的相对路径再做2组测试:1.绝对路径带中文2.相对路径不带中文看到底是中文没认出来,还是相对路径没写对.
解决方案三:
还有,既然是导出供人下载的,你就直接用当前时间或GUID拼个字符串当临时文件名就好了,不要胡乱起个中文名.万一有多个用户同时在导出,不是都互相覆盖了么
解决方案四:
你的路径给错了,或者是更加详细,比如@".导出1.xls"要不你在this.DownLoadExcel1(outputPath);的时候这样写if(Path.IsPathRootedoutputPath())this.DownLoadExcel1(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,outputPath));
解决方案五:
异常详细信息:System.IO.FileNotFoundException:未能找到文件“K:学习919StorageSystemWebModuleBaseInfooutputFormDataBase.xls”。
解决方案六:
完整的路径还是找不到
解决方案七:
把导出和下载分开调试一步步来别老想一步到位啊很明显你导出的路径错误,导致下载的时候找不到文件好好找找你到底导出到哪里去了然后对应的修改路径

时间: 2024-07-28 22:51:48

导出Excel异常的相关文章

解决poi导出Excel异常org.openxmlformats.schemas.spreadshe

JAVA报表 POI未捕获到 servlet OUTEXCEL 的其中一个服务方法中抛出的异常.抛出的异常:java.lang.NoClassDefFoundError: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFileRecoveryPr at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInte

JAVA导出EXCEL并下载

JAVA导出EXCEL并下载 一 ,流程大致如下 1.JSP页面点击按钮 2.点击导出excel按钮 3.点击确定按钮 (1)在谷歌浏览器中会直接下载 (2)在ie浏览器会提示保存路径 4.最后下载保存到本地,打开Excel表格,效果如下. 二,下面来看具体代码 前端js代码 function exportExcel() { $.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) { if (r) { var startTime =

exception-JSP导出Excel表是点击取消时报异常

问题描述 JSP导出Excel表是点击取消时报异常 public boolean export2(OutputStream os, String[] titles, List list, String[] keys, String reportDate) { WritableWorkbook wwb = null; //wwh20130327_add导出大量数据优化 WorkbookSettings wbs = new WorkbookSettings(); wbs.setUseTemporar

excel-C#导出EXCEL报异常来自 HRESULT:0x800AC472

问题描述 C#导出EXCEL报异常来自 HRESULT:0x800AC472 System.Runtime.InteropServices.COMException (0x800AC472): 异常来自 HRESULT:0x800AC472 解决方案 HRESULT: 0x800A03EC Windows Server 2008 C# 导出 ExcelC# 导出数据到Excel出现"异常来自 HRESULT:0x800A03EC"的错误

跪求java导出excel表格代码

问题描述 跪求java导出excel表格代码 方法执行了一点效果也没有,后台也没报错 解决方案 你可以 断点看下处理流程 及返回结果 解决方案二: 你可以 断点看下处理流程 及返回结果 解决方案三: 导出EXCEL表格的代码java写的excel表格数据导出代码java导出excel表格 解决方案四: 自己要学会排错,导出还是很简单的 解决方案五: 分块判断代码,先注释掉生成Excel代码,直接返回一个现有文件,看看浏览器上是否能收到返回流,这样确定响应返回文件的代码正确. 其次检查文件生成代码

Java中导入、导出Excel

原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.

导出图片-java导出excel包含图片遇到数据量比如超过130条左右就会报错

问题描述 java导出excel包含图片遇到数据量比如超过130条左右就会报错 用HSSF导出excel包含图片遇到数据量比如超过130条左右就会报错(每条包含一张图片):会出现sql的异常: 无效的列索引 ,但是sql语句并没有问题.请教各位高手指点! 解决方案 我来晚了,这是POI缓存机制问题.不是130条,是100条,当你超过100条时,数据会丢失.解决方法是,使用构造函数增加缓存行数 SXSSFWorkbook wb = new SXSSFWorkbook(5000);

VB.NET版机房收费系统---导出Excel表格

       datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,可以显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件非常简单和直观,大多数情况下,只需要设置DataSource属性即可,在绑定到包含多个列表或表的数据库源时,只需将DataMember属性设置为绑定的列表或表的字符串即可.机房收费系统多次用到数据表格的显示,并且导出为Excel表格,第一次机房收费系统是用VB版本的,她导出Excel的方法如下:        

C#中gridview控件数据导出EXCEL数据问题,求教

问题描述 gridview中数据显示正常导出excel后出现以下问题:账号异常,数据位置不对齐导出excel代码如下:GridView1.AllowPaging=false;//取消分页,使GridView显示全部数据.Response.Clear();Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");//设置输出流为简体中文Response.Charset