簡體   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