标签: linq-to-excel

如何使用LinqToExcel获取excel文件的工作表名称

我正在使用LinqToExcel,我希望能够获取excel文件中所有工作表的名称,并将其与我的html表单中的输入进行比较,这样当输入与excel表上的任何名称都不匹配时,系统将抛出一个例外.我如何使用LinqToExcel来执行此操作

c# asp.net-mvc linq-to-excel

4
推荐指数
1
解决办法
6785
查看次数

LinqToExcel - 导致Object的InvalidCastException必须实现Iconvertible错误

我正在使用以下代码查询LinqToExcel中的excel文件:

var excelFile = new LinqToExcel.ExcelQueryFactory(@"\"+txtFileName.Text.Replace(@"\\",@"\"));

var properties = from p in excelFile.Worksheet<Property>()
                 where AssessmentID != null
                 select p;
foreach (var autoP in properties)
        doSomething();
Run Code Online (Sandbox Code Playgroud)

当我查看运行时调试器时,我会在查看属性变量的"结果视图"时看到"InvalidCastException" .所以,我假设我的班级定义有一些时髦的东西.我还假设我不需要将类的所有成员映射到excel文件,而只需要我认为合适的那些.
所以,这里也是类定义:

public class Property
{

    [DataMember]
    public int? Year { get; set; }

    [DataMember]
    public string ChangeReason { get; set; }

    [DataMember]
    public string AssessmentID { get; set; }

    [DataMember]
    public string CallBackNotes { get; set; }

    [DataMember]
    public string InspectionNotes { get; set; } 

    [DataMember]
    public string Notes { get; …
Run Code Online (Sandbox Code Playgroud)

excel iconvertible linq-to-excel visual-studio-2015

4
推荐指数
1
解决办法
858
查看次数

LinqToExcel外部表的格式不正确

我一直在使用LinqToExcel解析exel文档已有一段时间,突然它停止了工作。

我收到以下错误:

外部表格的格式不正确。

任何想法为什么会这样?或如何解决?

 if (File.Exists(filenameFull))
            {
                var excel = new ExcelQueryFactory(filenameFull);

                IList<Row> scanningRangesRows = 
                        excel.Worksheet("B - Scanning Ranges").ToList();
Run Code Online (Sandbox Code Playgroud)

我使用的是LinqToExcel 1.6.3版本,当问题开始发生时,我更新为最新版本的LinqToExcel 1.6.6,但无济于事。

我刚刚注意到,我正在下载的文件比以前的版本要小得多。我在记事本中打开它,可以在二进制数据中看到[Content_Types] .xml。因此,看来数据源现在已保存为具有相同扩展名的xls文件的xml表示形式。当我在Excel中手动打开相同文件时,它会弹出

您尝试打开''的文件的格式与文件扩展名指定的格式不同。打开文件之前,请验证该文件来自受信任的来源。您要立即打开文件吗?

单击“是”后,文件仍会打开,外观与以前的版本相同。

linq-to-excel

2
推荐指数
1
解决办法
3204
查看次数

64位替代linq以取得优异成绩

我有一个ASP.NET MVC 3应用程序,我想在其中导入excel文件.

我设法使用linq-to-excel库来做到这一点.但是当我在IIS上部署应用程序时,我得到了一个错误,结果是IIS在64位系统上运行.

这可以通过32-bits applications在IIS中启用池的选项来解决.

这会影响应用程序的性能吗?如果是,是否有另一种替代方案linq-to-excel可以在64位上运行.

excel iis-7 linq-to-excel asp.net-mvc-3

2
推荐指数
1
解决办法
2161
查看次数

LinqToExcel:excel列中的不同值

这对你们大师来说可能是一件非常简单的事情,但我不熟悉C#4和INTEROP.因此,我很难过.这是我的问题.我有一个具有重复数据的excel列,我想将其修剪为唯一值.这是数据的样子:

ColA    ColB
10      Adam
12      Jane
14      Adam
18      Adam
20      Eve
Run Code Online (Sandbox Code Playgroud)

所以,最后我只想要ColB的独特名字:

Adam
Jane
Eve
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将所有这些值放入List中然后向其中添加Distinct功能来实现此目的.但我认为我做错了什么.无论如何,这是我的计划:

Application XLApp = new Microsoft.Office.Interop.Excel.Application();
var XLBook = XLApp.Workbooks.Open(@"c:\temp\Test.xls", ReadOnly: false);
// Grab the 1st sheet
var XLSheet = (Microsoft.Office.Interop.Excel.Worksheet)XLBook.Worksheets.get_Item(1);

XLApp.Visible = true;
// I think I need help with the following lines
IEnumerable<string> myCol = XLApp.Range["B2", XLApp.Range["B2"].End[XlDirection.xlDown]].Select();
myCol.ToList().Distinct();

XLBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
((_Application)XLApp).Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(XLApp);
Run Code Online (Sandbox Code Playgroud)

如何使用C#4对Excel执行此操作?

提前致谢.

linq interop excel-interop linq-to-excel c#-4.0

1
推荐指数
1
解决办法
6112
查看次数

使用LinqToExcel拉出整个excel行

我试图使用linq excel从excel文件中提取整行值.我有所有列名称(有104个不同的名称),现在我只需要获得与每个标题相关联的一行值.我想要做的只是拉出整个第二行的值,但我还没有能够解决这个问题.

有谁知道只拉一排的方法?或者我是否需要以不同的方式处理此问题,并通过标题名称提取单个值.

谢谢.

c# linq-to-excel

1
推荐指数
1
解决办法
2798
查看次数

在if语句之前初始化对象

在我的程序中,我正在阅读excel表并正在做一些linq选择,这工作正常.

问题:我尝试通过应用If语句进行预选.变量将在每种情况下分配(if/else),但编译器没有看到.编译器告诉我初始化var beforehands但是当我尝试这个时,我失败了因为我只习惯像sting,int或double之类的变量,我可以在之前轻松分配:

//This function takes the downloaded xlsx and makes selection of applicable items

var excel = new ExcelQueryFactory("list.xlsx");
//get all items with discount
if (onlyAcceptDiscountedItems == true)
{
    var discounts = from s in excel.Worksheet()
                    where s["Discount/Premium"].Cast<string>().StartsWith("-")
                    select s;
}
else
{
    var discounts = excel.Worksheet();
}
if (discounts.Count() != 0)
{
    //some application logic comes here
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时:

var excel = new ExcelQueryFactory("list.xlsx");ter code here
var discounts = excel.Worksheet();
if (onlyAcceptDiscountedItems == true)
{
    discounts = from …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-excel

1
推荐指数
1
解决办法
145
查看次数

LinqToExcel返回null

我有一张xls格式的excel表,我使用LinqToExcel读取它,然后将其导入我的数据库.

此表包含约3K行和仅6列.我使用.addmapping将我的类属性映射到列名

我遇到的问题是:尽管单元格中有数据,但"网络代码"列的单元格仍然是空的.

这是一个空的样本数据! 在此输入图像描述

我的代码观看 在此输入图像描述

以下是数据正确的示例数据: 在此输入图像描述

我的代码观察 在此输入图像描述

我已经尝试将ExcelColumn属性应用于映射,但没有运气!

码:

        var factory = new ExcelQueryFactory(_excelFilePath);
        factory.AddMapping<ExcelPriceEntity>(x => x.WebCode, "WEB-CODE");
        factory.AddMapping<ExcelPriceEntity>(x => x.Type, "TYPE");
        factory.AddMapping<ExcelPriceEntity>(x => x.Style, "STYLE");
        factory.AddMapping<ExcelPriceEntity>(x => x.Qty, "QTY");
        factory.AddMapping<ExcelPriceEntity>(x => x.UnitPrice, "Unit Price");
        factory.AddMapping<ExcelPriceEntity>(x => x.Bucket, "WEBCODE W/BUCKET");

        factory.StrictMapping = StrictMappingType.ClassStrict;
        factory.TrimSpaces = TrimSpacesType.Both;
        factory.ReadOnly = true;
        var prices = factory.Worksheet<ExcelPriceEntity>(_allPricesSheetName).ToList();
        var priccerNP = prices.Where(p => p.Type.Contains("900 ARROW TAPE")).ToList();
Run Code Online (Sandbox Code Playgroud)

我的PriceEntity类:

public class ExcelPriceEntity
{
    //[ExcelColumn("TYPE")] 
    public string Type { get; set; }
    public string WebCode { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# linq import-from-excel linq-to-excel

0
推荐指数
1
解决办法
1753
查看次数