c#难以将excel数据读取到数组中(互操作)

本文关键字:数组 互操作 读取 excel 数据 | 更新日期: 2023-09-27 18:11:48

首先我很抱歉我以前问过这个问题,但是由于我在一天中安静的时间发帖,所以我从来没有得到过答案。

我试图从xlsx文档列读取数据到基于表单的程序上的数组列表,这样我就可以调用各种数据来操纵或简单地显示在屏幕上,但不能得到一些代码的工作。我搜索了论坛,发现这是根据海报的作品,但我有问题。我真的被这个问题困住了,因为我从来没有写过任何涉及excel的代码。

它抛出的错误是"Server, Missing &"会话"在当前上下文中不存在。我知道会话不是winforms应用程序的一部分,但不知道该怎么做。

using Microsoft.Office.Interop.Excel;

主代码

string filePath = "SampleData.xlsx";
try
{
   Excel.Application appExl;
   Excel.Workbook workbook;
   Excel.Worksheet NwSheet;
   Excel.Range ShtRange;
   appExl = new Excel.Application();
   workbook = appExl.Workbooks.Open(filePath);
   workbook = appExl.Workbooks.Open(Server.MapPath(filePath), Missing.Value,         Missing.Value,
   Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
   Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
   NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
   int Cnum = 0;
   int Rnum = 0;
   ShtRange = NwSheet.UsedRange;
   DataTable dt = new DataTable();
   for (int row = 1; row <= ShtRange.Rows.Count; row++)
   {
      string str = Convert.ToString((ShtRange.Cells[row, 1] as Excel.Range).Value2);
      dt.Columns.Add(str);
   }
   workbook.Close(true);
   appExl.Quit();
   Session["data"] = dt;
   return true;
}
catch (Exception ex)
{
   return false;
}

这是否更好地代表了它应该是什么样子?

 using Excel = Microsoft.Office.Interop.Excel;
 using System.Reflection;
 string FilePath = "SampleData.xlsx";
    Excel.Application appExl;
    Excel.Workbook workbook;
    Excel.Worksheet NwSheet;
    Excel.Range ShtRange;
    appExl = new Excel.Application();
    workbook = appExl.Workbooks.Open(FilePath);
    NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
    int Cnum = 0;
    int Rnum = 0;
    ShtRange = NwSheet.UsedRange;
    DataTable dt = new DataTable();
    for (int row = 1; row <= ShtRange.Rows.Count; row++)
    {
       string str = Convert.ToString((ShtRange.Cells[row, 1] as Excel.Range).Value2);
       dt.Columns.Add(str);
    }
    workbook.Close(true);
    appExl.Quit();

c#难以将excel数据读取到数组中(互操作)

我认为您需要在您的项目中添加以下引用:

System.Web
System.Reflection

您可能还需要在代码中添加以下内容:

Using System.Web
Using System.Reflection

如果这是一个Winforms应用程序,你不需要System。你需要将'Server.MapPath(filePath)'替换为filePath而不是'Session["data"]',你可能会想要使用DataGrid。

也看起来像您试图连续打开文件两次。不知道为什么