【问题标题】:Export data from dataset to excel将数据集的数据导出到excel
【发布时间】:2011-04-26 12:39:12
【问题描述】:

我正在尝试将数据从数据集导出到 excel 并将其直接保存到给定的路径,而不给我打开、保存或取消的选项。

【问题讨论】:

  • 即使你在谷歌中尝试过,你也会从中得到很多
  • 伙计们,我不应该选择保存 Excel,但它应该会自动保存在我指定的位置。
  • 我已合并您未注册的帐户。您现在可以将 cmets 留在答案下,编辑您的问题并在需要时接受答案。
  • 那么就不要把数据刷出来

标签: c# excel export-to-excel


【解决方案1】:

使用ExcelLibrary 这是一个单行...

DataSet myDataSet;
... populate data set ...
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", myDataSet);

另见Create Excel (.XLS and .XLSX) file from C#

【讨论】:

  • 我试过这个。它给出了“无效单元格值”异常。我没有看到任何积极的发展
  • @shreesha 我想知道您的一个或多个单元格公式是否有错误?
  • 是的@tony 可能。否则你的解决方案是完美的。
【解决方案2】:

这个C# Excel library 也可以用来导出数据集。有关如何导出的更多详细信息,可以找到here

ExcelDocument xls = new ExcelDocument();
xls.easy_WriteXLSFile_FromDataSet("ExcelFile.xls", dataset, 
                 new ExcelAutoFormat(Styles.AUTOFORMAT_EASYXLS1), "Sheet Name");

【讨论】:

    【解决方案3】:

    检查DataSetToExcel

    c# (WinForms-App) export DataSet to Excel

    在第一个链路中更改代码,如下所示:

    删除最初启动的所有代码,并尝试以下

    using (StringWriter sw = new StringWriter("Your Path to save"))
    {
      using (HtmlTextWriter htw = new HtmlTextWriter(sw))
      {
        // instantiate a datagrid
        DataGrid dg = new DataGrid();
        dg.DataSource = ds.Tables[0];
        dg.DataBind();
        dg.RenderControl(htw);
      }
    }
    

    【讨论】:

      【解决方案4】:

      这是另一个 C# 库,可让您使用 OpenXML 库从 DataSet 导出到 Excel 2007 .xlsx 文件。

      http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

      所有源代码均免费提供,还有一个演示应用程序,您可以在 ASP.Net、WPF 和 WinForms 应用程序中使用它。

      将类添加到应用程序后,只需调用一次函数即可将数据导出到 Excel 文件中。

      CreateExcelFile.CreateExcelDocument(myDataSet, "C:\\Sample.xlsx");
      

      没有比这更容易的了。

      祝你好运!

      【讨论】:

        【解决方案5】:

        嗨,我找到了一个完美的解决方案Here

        只需将代码中的“missing.value”替换为 System.Type.Missing。同时删除

        oWB.Close(System.Type.Missing, System.Type.Missing, System.Type.Missing); 和

        oXL.Quit(); 从代码。否则你的 Excel 一打开就会自动关闭。

        【讨论】:

          【解决方案6】:

          这不是最好的解决方案,但这就是我所做的,它打开一个新的 excel 文档,然后复制数据集中的内容,您需要做的就是整理列并保存它。

          顺便说一句,我的第一篇文章回答了一个问题,希望对你有帮助

                  private void cmdExport_Click(object sender, EventArgs e)
                  {
                      System.Diagnostics.Process.Start("excel.exe");
                      try
                      {
                          copyAlltoClipboard();
                          Microsoft.Office.Interop.Excel.Application xlexcel;
                          Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
                          Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
                          object misValue = System.Reflection.Missing.Value;
                          xlexcel = new Excel.Application();
                          xlexcel.Visible = true;
                          xlWorkBook = xlexcel.Workbooks.Add(misValue);
                          xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
                          Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
                          CR.Select();
                          xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show("Error :" + ex.Message);
                      }
                  }
                  private void copyAlltoClipboard()
                  {
                      dataGridViewItems.SelectAll();
                      DataObject dataObj = dataGridViewItems.GetClipboardContent();
                      if (dataObj != null)
                          Clipboard.SetDataObject(dataObj);
                  }
          

          【讨论】:

          • OP 希望保存到的路径在哪里?或许请他澄清一下他打算如何指定这条路径,然后对此进行扩展。
          猜你喜欢
          • 2010-10-15
          • 1970-01-01
          • 2010-10-30
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 1970-01-01
          • 2020-04-02
          相关资源
          最近更新 更多