Openxml - 以标准格式保存非标准xlsx

时间:2016-04-28 17:41:01

标签: c# openxml

我有一个可以通过数据读取器读取Xls和Xlsx文件的工具。我能够通过列标题在Sql server中创建一个表,然后使用数据读取器将数据泵入表中。

我的一位客户发送的xlsx文件可以通过Excel打开但不能使用我的工具。我猜测xlsx是由第三方应用程序而不是Excel生成的。

如果我在Excel中打开文件并保存,该文件将与该工具一起使用。我甚至可以使用Excel.Application在C#中执行此操作。但是,我不想在我的服务器上安装Office,所以这不是一个选项。

我的想法是使用Openxml打开并保存文件。虽然这似乎有效,但它并没有像Excel那样“修复”格式。

有人有Openxml的经验吗?也许你有个想法让我试试?

        using (SpreadsheetDocument ssd = SpreadsheetDocument.Open(FileName, true))
        {
            WorkbookPart wbPart = ssd.WorkbookPart;
            WorksheetPart wsPart = wbPart.WorksheetParts.First();

            wsPart.Worksheet.Save();
            wbPart.Workbook.Save();
        }

1 个答案:

答案 0 :(得分:0)

使用ClosedXml:

    private void ReSaveXlsx(string FileName)
    {
        using (XLWorkbook WorkBookNew = new XLWorkbook(FileName))
        {
            WorkBookNew.Worksheets.Delete(1);
            using (XLWorkbook Workbook = new XLWorkbook(FileName))
            {
                foreach (var Worksheet in Workbook.Worksheets)
                {
                    WorkBookNew.AddWorksheet(Worksheet);
                }
                WorkBookNew.SaveAs(FileName);
            }
        }

    }