繁体   English   中英

C# - 使用 OpenXml SDK 将 excel 表导出到图像

[英]C# - Export excel sheet to image using OpenXml SDK

我想用 DocumentFormat.OpenXml 将我的 excel 表转换为图像

我的代码是:

class Program
{
    static void Main()
    {
        String fileName = @"/Users/user/Downloads/Test.xlsx";
        String path = @"/Users/user/Downloads/Test.png";
        // Open the document for editing.
        using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))
        {
            WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
            WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();

            OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);
            string text;
            while (reader.Read())
            {
                if (reader.ElementType == typeof(CellValue))
                {
                    text = reader.GetText();
                    Console.Write(text + " ");
                }
            }
            Console.WriteLine();
            //Console.ReadKey();

            worksheetPart.Worksheet.Save();
            workbookPart.Workbook.Save();
            spreadsheetDocument.SaveAs(path);

        }
    }
}

它给出了一个错误

Unhandled exception. System.IO.IOException: Cannot get stream with FileMode.Create, FileMode.CreateNew, FileMode.Truncate, FileMode.Append when access is FileAccess.Read.
   at System.IO.Packaging.PackagePart.ThrowIfOpenAccessModesAreIncompatible(FileMode mode, FileAccess access)
   at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
   at System.IO.Packaging.PackagePart.GetStream(FileMode mode)
   at DocumentFormat.OpenXml.Packaging.OpenXmlPart.GetStream(FileMode mode)
   at DocumentFormat.OpenXml.OpenXmlPartRootElement.SaveToPart(OpenXmlPart openXmlPart)
   at DocumentFormat.OpenXml.OpenXmlPartRootElement.Save()
   at Program.Main() in /Users/user/C#/Program.cs:line 36

如何将读取文件转换为图像顺便说一句我无法使用任何其他模块

您要从单元格或整个工作表中导出图像吗? 因为在您的代码中您试图将文本导出到图像。在这种情况下,您需要在图片框中创建图像并保存它。 您不能将字符串等文本保存到图像。 这是不同的格式。

取而代之的是,您可以尝试通过 OpenXML 从 excel 中收集数据并将其绘制在图片框上:

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    using (Font myFont = new Font("Arial", 14))
    {
        e.Graphics.DrawString("Hello .NET Guide!", myFont, Brushes.Green, new Point(2, 2));
    }
}

之后,您可以从这个图片框将图像保存到.png。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM