将数据集导出到c#中的excel中

本文关键字:中的 excel 数据集 | 更新日期: 2023-09-27 17:57:39

我有一个功能,可以将数据集的数据导出到excel表中。它在本地机器上运行良好但当我把代码上传到服务器时,它就不起作用了。。。。

代码隐藏文件:

    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();

web配置文件:

      <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");

当我从本地系统执行解决方案时,数据集值将与列标题一起复制到xml文件中。。然后我将这些文件移到inetpub文件夹下的虚拟目录中。通过iisManager,我浏览了虚拟目录并运行了相同的页面,xml文件保存在相同的路径中,但没有列标题:(。。然后我通过URL(通过inetrnal ip地址)从其他机器打开了相同的页面,但xml文件没有保存到机器上。。请帮帮我。。

关于

T.Navin

将数据集导出到c#中的excel中

强烈反对在服务上自动执行Word或Excel,但您可以在此处阅读有关它的一些注意事项。首先,您可以尝试将服务设置为以本地系统运行。另一件要玩的事情是在中找到Excel

控制面板-管理工具-组件服务-组件服务——我的电脑-DCOM配置

在那里你可以设置Excel可以运行的特权,等等…

但是,我不得不说,即使一切都设置好了,它仍然可能不起作用。我们在这方面遇到了巨大的困难,一些服务器可以工作,而完全相同的配置在其他服务器上无法工作。。。

因此,我建议(因为您的需求并不真正需要自动化)使用XSLT自己创建Excel文件来创建SpreadSheetML-这实际上比您最初想象的更容易,但这确实是一种很好的方法。尝试将XLS文件保存为OfficeXML2003格式,然后查看XML的结构——如果您查看正文,它实际上并没有那么复杂。当您创建这些XML时,Excel可以像打开任何其他文件一样打开它。

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

希望能有所帮助。