Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试从csv文件生成excel时参数计数不匹配_C#_Asp.net_.net_Excel_Csv - Fatal编程技术网

C# 尝试从csv文件生成excel时参数计数不匹配

C# 尝试从csv文件生成excel时参数计数不匹配,c#,asp.net,.net,excel,csv,C#,Asp.net,.net,Excel,Csv,我正在尝试从CSVfiles生成一个Excel文件。我有不同的CSV文件,我想读取它们并生成一个EXCEL文件 我一直在尝试使用EPPlus库来编写excel。我总是遇到同样的问题:参数计数不匹配 这是我的代码: public static IActionResult ExelWriter([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)

我正在尝试从CSVfiles生成一个Excel文件。我有不同的CSV文件,我想读取它们并生成一个EXCEL文件

我一直在尝试使用EPPlus库来编写excel。我总是遇到同样的问题:参数计数不匹配

这是我的代码:

public static IActionResult ExelWriter([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {

       IEnumerable<List<string>> list = getData();

       string excelFileName2 = @"C:\Users\a\Desktop\exelreader\testF4" + DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx";
        string worksheetsName = "Sheet1";
        bool firstRowIsHeader = false;
        var format = new ExcelTextFormat();
        format.Encoding = Encoding.UTF8;
        format.Delimiter = ',';
        format.EOL = "\r"; 

        using (ExcelPackage package2 = new ExcelPackage(new FileInfo(excelFileName2)))
        {
            ExcelWorksheet worksheet = package2.Workbook.Worksheets.Add(worksheetsName);
            worksheet.Cells.LoadFromCollection(list); *this line gives me error*
            package2.Save();
        }
        return null;
    }

 public static IEnumerable<List<string>> getData()
    {
        string csvFileName = @"C:\Users\a\Desktop\exelreader\testcsv.csv";
        List<List<string>> rows = new List<List<string>>();
        string value;
        using (TextReader reader = File.OpenText(csvFileName))
        {
            var csv = new CsvReader(reader);
            csv.Configuration.HasHeaderRecord = false;
            while (csv.Read())
                {
                    List<string> row = new List<string>();
                    for (int i = 0; csv.TryGetField<string>(i, out value); i++)
                    {
                        if (csv.GetField(i) == null)
                        {
                            row.Add("");
                        }
                        else
                        {
                            row.Add(Convert.ToString(csv.GetField(i)));
                        }
                    }

                    if (row.Any())
                    {
                        rows.Add(row);
                    }
            }
        }

        IEnumerable<List<string>> a = rows.AsEnumerable();
        return a;
    }
公共静态IActionResult ExelWriter([HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequest请求,ILogger日志)
{
IEnumerable list=getData();
字符串excelFileName2=@“C:\Users\a\Desktop\exelreader\testF4”+DateTime.Now.ToString(“yyyy-MM-dd--hh-MM-ss”)+“.xlsx”;
字符串工作表name=“Sheet1”;
bool firstRowIsHeader=false;
var format=新的ExcelTextFormat();
format.Encoding=Encoding.UTF8;
format.Delimiter=',';
format.EOL=“\r”;
使用(ExcelPackage2=新的ExcelPackage(新文件信息(excelFileName2)))
{
Excel工作表=package2.工作簿.Worksheets.Add(工作表名称);
worksheet.Cells.LoadFromCollection(list);*此行给出了错误信息*
package2.Save();
}
返回null;
}
公共静态IEnumerable getData()
{
字符串csvFileName=@“C:\Users\a\Desktop\exelreader\testcsv.csv”;
列表行=新列表();
字符串值;
使用(TextReader=File.OpenText(csvFileName))
{
var csv=新的CsvReader(读卡器);
csv.Configuration.HasHeaderRecord=false;
而(csv.Read())
{
列表行=新列表();
for(int i=0;csv.TryGetField(i,out值);i++)
{
if(csv.GetField(i)==null)
{
行。添加(“”);
}
其他的
{
添加(Convert.ToString(csv.GetField(i));
}
}
if(row.Any())
{
行。添加(行);
}
}
}
IEnumerable a=行。AsEnumerable();
返回a;
}
我希望得到完整有效的excel文档。你知道我为什么会有这样的错误吗?因为我不明白为什么我会在参数类型完全相同的情况下出错

**PS:我在运行时得到错误,而不是在编译时**


谢谢:)

…参数的类型完全相同,不是说数据类型不匹配,而是说参数的数量不匹配@ŇssaPøngjǣrdenlarp怎么可能?我需要一个参数,我只给它一个。而且,当我给出一个IEnumerable类型的空集合时,它似乎也能工作。我不明白。为什么这是一个运行时错误而不是编译时错误?CSV在每行中的列数是否相同。Excel可能使用第一行(没有标题)来确定列数。如果其他行包含的数据多于,则可能会发生错误。我以前通过将输出列数设置为输入中的最大列数来处理此问题。(如果事先不知道……@jdweng,csv的每一行都有相同的列。实际上,有些行的列数比第一行少。你认为这可能是同样的情况吗?同样的问题?有什么想法吗?也许你可以在你的电脑上测试我的代码:)