Openxml - 以标准格式保存非标准 xlsx
Openxml - Save non standard xlsx in standard format
我有一个工具可以通过数据读取 Xls 和 Xlsx 文件 reader。我能够通过 headers 列在 Sql 服务器中创建一个 table,然后使用数据 reader 将数据泵入 table。
我的一位客户发送了可以用 Excel 打开但不适用于我的工具的 xlsx 文件。我猜 xlsx 是由第三方应用程序生成的,而不是 Excel.
如果我在 Excel 中打开文件并保存它,该文件可以使用该工具。我什至可以使用 Excel.Application 在 C# 中执行此操作。但是我不想在我的服务器上安装 Office,所以这不是一个选项。
我的想法是使用 Openxml 打开和保存文件。虽然这似乎有效,但它并不像 Excel 那样 'fix' 格式。
有人使用过 Openxml 吗?也许你有想法让我试试?
using (SpreadsheetDocument ssd = SpreadsheetDocument.Open(FileName, true))
{
WorkbookPart wbPart = ssd.WorkbookPart;
WorksheetPart wsPart = wbPart.WorksheetParts.First();
wsPart.Worksheet.Save();
wbPart.Workbook.Save();
}
使用 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);
}
}
}
我有一个工具可以通过数据读取 Xls 和 Xlsx 文件 reader。我能够通过 headers 列在 Sql 服务器中创建一个 table,然后使用数据 reader 将数据泵入 table。
我的一位客户发送了可以用 Excel 打开但不适用于我的工具的 xlsx 文件。我猜 xlsx 是由第三方应用程序生成的,而不是 Excel.
如果我在 Excel 中打开文件并保存它,该文件可以使用该工具。我什至可以使用 Excel.Application 在 C# 中执行此操作。但是我不想在我的服务器上安装 Office,所以这不是一个选项。
我的想法是使用 Openxml 打开和保存文件。虽然这似乎有效,但它并不像 Excel 那样 'fix' 格式。
有人使用过 Openxml 吗?也许你有想法让我试试?
using (SpreadsheetDocument ssd = SpreadsheetDocument.Open(FileName, true))
{
WorkbookPart wbPart = ssd.WorkbookPart;
WorksheetPart wsPart = wbPart.WorksheetParts.First();
wsPart.Worksheet.Save();
wbPart.Workbook.Save();
}
使用 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);
}
}
}