导出数据集在Excel中的excel

我有把数据集的数据导出到excel表单的function。 它在本地机器上正常工作,但是我上传代码到服务器不起作用….

代码在文件后面:

using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; string FilePath = ConfigurationManager.AppSettings["dataqueryfile"] + "dataquery_" + DateTime.Now.ToString("yyyyMMddhhmm") ; Excel.Application oXL; Excel.Workbook oWB; Excel.Worksheet oSheet; Excel.Range oRange; // Start Excel and get Application object. oXL = new Excel.Application(); // Set some properties oXL.Visible = true; oXL.DisplayAlerts = false; // Get a new workbook. oWB = oXL.Workbooks.Add(Missing.Value); // Get the active sheet oSheet = (Excel.Worksheet)oWB.ActiveSheet; oSheet.Name = "DataQuery"; // Process the DataTable DataTable dt = ds.Tables[0]; int rowCount = 1; foreach (DataRow dr in dt.Rows) { rowCount += 1; for (int i = 1; i < dt.Columns.Count + 1; i++) { // Add the header the first time through if (rowCount == 2) { oSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName; } oSheet.Cells[rowCount, i] = dr[i - 1].ToString(); } } // Resize the columns oRange = oSheet.get_Range(oSheet.Cells[1, 1], oSheet.Cells[rowCount, dt.Columns.Count]); oRange.EntireColumn.AutoFit(); // Save the sheet and close oSheet = null; oRange = null; oWB.SaveAs(FilePath + ".xls", Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); oWB.Close(Missing.Value, Missing.Value, Missing.Value); oWB = null; oXL.Quit(); // Clean up // NOTE: When in release mode, this does the trick GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); 

网页configuration文件:

  <add key="dataqueryfile" value="C:\navin\"/> <add assembly="Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/> <add assembly="office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/> <add assembly="Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/> <add assembly="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 

编辑:

  da = new SqlDataAdapter(); conn.Open(); da.SelectCommand = command; da.Fill(ds); ds.WriteXml("c:\\Customers.xml"); 

当我从本地系统执行解决scheme时,数据集的值被复制到XML文件以及列标题..然后我将文件移动到inetpub文件夹下的虚拟目录。 我通过iispipe理器浏览虚拟目录并运行相同的页面,xml文件被保存在相同的path,但没有列标题:(然后我打开从其他机器通过URL(通过内部IP地址)相同的页面,但XML文件不保存到机器.. PLZ帮助我..

thanx n问候

T.Navin

在服务上自动化Word或Excel是非常不鼓励的,但是您可以在这里阅读一些关于它的注意事项。 首先,你可以尝试设置你的服务作为本地系统运行。 其他的事情是findExcel中的:

控制面板 – pipe理工具 – 组件服务 – 组件服务 – 我的电脑 – DCOMconfiguration

在那里你可以设置Excel的运行权限等。

但是,我不得不说,即使一切安装妥当,它仍然可以不工作。 我们遇到了很多困难,一些服务器正在运行,而另外一些服务器上的configuration完全相同。

所以,我build议(因为你的需求并不需要自动化)是使用XSLT自己创buildExcel文件来创buildSpreadSheetML – 实际上它比起初你想象的要容易得多,但这确实是一个很好的方法。 尝试以Office XML 2003格式保存您的XLS文件,并查看XML的结构 – 如果您查看正文,则实际上并不复杂。 当你创build这些XML时,Excel可以像打开其他文件一样打开它。

另一种方法(如果您不喜欢使用XSL转换)是使用Open XML Format SDK–我们发现对于Word来说实现起来有点乏味(我们需要一些细微差别),所以我们仍然更喜欢XSLT,但是对于Excel它可能certificate是相当容易的。 有了这个SDK,你甚至可以保存为XSLX / DOCX格式(这实际上与ProcessingML非常相似,但是打包成zip格式)

希望能帮助到你。