【问题标题】:Load an Excel file using implicit typing使用隐式类型加载 Excel 文件
【发布时间】:2014-02-08 01:56:12
【问题描述】:
class ExcelHandling
    {
        public static void NewExcelFile(){
            frmMain._frmMain.EXCEL_FILE = new Excel.Application();
            var excelApp = frmMain._frmMain.EXCEL_FILE as Excel.Application;
            excelApp.Workbooks.Add();
            excelApp.Visible = true;
        }

        public static void LoadExcelFile()
        {
            FileStream load = File.Open(@"F:\dsa.xlsx", FileMode.Open, FileAccess.Write);
            var excelApp = load as Excel.Application;
            frmMain._frmMain.EXCEL_FILE = excelApp;
            excelApp.Visible = true;
        }
    }

上面显示的LoadExcelFile()方法不起作用。

将现有 excel 文件加载到变量中的正确方法是什么?我尝试了几件事,但无济于事。 NewExcelFile() 方法就像一个魅力——它创建一个新的 Excel 文件,将其存储到 EXCEL_FILE 全局变量中,以便我可以在之后对其进行操作并显示它。我希望加载函数执行相同的操作,但使用现有的 excel 文件。

【问题讨论】:

  • 我会研究Excel Data Reader - 它很轻量级并且非常易于使用。将您的数据加载到DataSet,然后您可以轻松地对其进行操作。
  • 也许看看这个页面:stackoverflow.com/questions/1118735/…
  • @Kapol 我正计划制作一个加载文件对话框,因此获取一个已经运行的 excel 文件不会为我做这件事。我只需要打开文件,这样用户就可以看到它并将其加载到变量中,这样他就可以通过 windows 窗体对其进行操作。

标签: c# file-io global-variables


【解决方案1】:

以下是使用 Microsoft.Interop 库打开现有 Excel 电子表格的示例:

var xlApp = new Microsoft.Office.Interop.Excel.Application();
var xlWorkBook = xlApp.Workbooks.Open("PathAndNameOfMyFile.xls", 0, true, 5, "", "", true,    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

重载参数在文档中相当模糊,但不幸的是需要。 Intellisense 应该让您对这些值及其含义有所了解。

您的问题是您使用的是FileStream,然后试图让库找出该流包含的内容。这将利用互操作库来打开文件并正确处理数据。

【讨论】:

  • 谢谢,这正是我想要的,我想我应该更彻底地检查一下 MS.Interop 库。
  • 哈没问题。里面的一些东西有非常糟糕的文档,所以你必须在一半的时间里查看智能感知。
【解决方案2】:

我真的很喜欢 LinqToExcel。您可以在 Visual Studio 中使用 NuGet Package Mgr 添加它 https://www.nuget.org/packages/LinqToExcel 。文档是@https://code.google.com/p/linqtoexcel/(带有演示视频)

【讨论】:

  • 我不希望只为这一项操作添加外部库。如果可能的话,我想使用默认的 c# 库将文件流转换为 excel 应用程序变量。
  • 哦。你试过 excelApp.Workbooks.Open(@"F:\dsa.xlsx") 吗?
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2019-01-21
  • 2021-10-16
  • 2022-08-19
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
相关资源
最近更新 更多