【问题标题】:NPOI c# copy worksheet in another workbook xlsxNPOI c#在另一个工作簿xlsx中复制工作表
【发布时间】:2015-07-24 09:35:38
【问题描述】:

我尝试使用 NPOI 在另一个工作簿 xlsx 中复制工作表,但它失败了。 xls文件有一个例子here

我没有找到等效的 XSSF 函数。 我总是收到损坏的文件。

所有示例都使用 HSSF,您能帮帮我吗?

这是我的代码不起作用

List<string> fileToMerge = new List<string>();
fileToMerge.Add("file1.xlsx");
fileToMerge.Add("file2.xlsx");

MergeFiles(fileToMerge, "fileMerged.xlsx");


private void MergeFiles(List<string> filenames, string outFilename)
{
    XSSFWorkbook merged = new XSSFWorkbook();

    foreach (string filename in filenames)
    {
        XSSFWorkbook workbook = GetWorkbook(filename);

        for (int i = 0; i < workbook.NumberOfSheets; i++)
        {
            XSSFSheet sheet1 = workbook.GetSheetAt(i) as XSSFSheet;

            merged.Add(sheet1.CopySheet(sheet1.SheetName, true));
        }
    }

    SaveWorkbook(merged, outFilename);
}

private XSSFWorkbook GetWorkbook(string filename)
{
    XSSFWorkbook workbook = new XSSFWorkbook();
    string path = Path.Combine(Environment.CurrentDirectory, filename);

    if (!File.Exists(path))
    {
        Console.WriteLine("This file does not exist: " + path);
        Environment.Exit(7);
    }
    else
    {
        FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
        workbook = new XSSFWorkbook(fs);
        fs.Close();
        fs.Dispose();
    }

    return workbook;
}

private void SaveWorkbook(XSSFWorkbook workbook, string fileName)
{
    // metadata
    workbook.GetProperties().CoreProperties.Creator = "My Company " + DateTime.Now.Year.ToString();
    workbook.GetProperties().ExtendedProperties.props.AddNewProperties().Company = "My Company";

    FileStream sw = File.Create(fileName);
    workbook.Write(sw);
    sw.Close();
    sw.Dispose();
}

提前谢谢你。

【问题讨论】:

标签: c# .net excel npoi


【解决方案1】:
public FileResult DownloadFile()
{
    // code to create workbook 
    using (var exportData = new MemoryStream())
    {
        workbook.Write(exportData);
        string saveAsFileName = string.Format("MembershipExport-{0:d}.xls", DateTime.Now).Replace("/", "-");

        byte[] bytes = exportData.ToArray();
        return File(bytes, "application/vnd.ms-excel", saveAsFileName);
    }
}

取自帖子how to download a xls file generated by NPOI in ASP MVC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2023-01-24
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多