繁体   English   中英

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

[英]export dataset to excel in c#

我有 function 将数据集的数据导出到 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");

当我从本地系统执行解决方案时,数据集值将与列 header 一起复制到 xml 文件中。然后我将文件移动到 inetpub 文件夹下的虚拟目录中。 through iis manager i browsed the virtual directory and run the same page, the xml file is getting saved in the same path but without the column header:(.. then i opened the same page from other machine through URL (thru inetrnal ip address)但是 xml 文件没有保存到机器上..请帮帮我..

谢谢你

纳文

强烈建议不要在服务上自动化 Word 或 Excel,但您可以在此处阅读有关它的一些注意事项。 首先,您可以尝试将您的服务设置为作为本地系统运行。 其他要玩的是在以下位置找到 Excel:

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

在那里您可以设置 Excel 可以运行的权限等...

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

因此,我建议的(因为您的需求实际上不需要自动化)是使用ZC1D81AF581AF581AF581AF583584B4E9D9369110DEDED8FDCZ使用Z139E7146F223CD23CD247C6BE049E8888您实际上比您更轻松的Zheetsynyy ,但实际上是一定的。 尝试将您的 XLS 文件保存为 Office XML 2003 格式,并查看 XML 的结构 - 如果您查看正文,它真的没那么复杂。 当您创建这些 XML 文件时,Excel 可以像打开任何其他文件一样打开它。

另一种方法(如果您不喜欢使用XSL转换)是使用开放Z3501BB093D363810B671059B9B9CFED3F8Z格式ZF20E3C55E54C0AB3D375D660B375D660B3F896F6AZ-我们发现某个人是某种程度上的89。事实证明这很容易。 使用此 SDK,您甚至可以保存为 XSLX/DOCX 格式(实际上与 ProcessingML 非常相似,但打包成一个 zip)

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM