繁体   English   中英

如何使用vb.net将Excel表另存为图片?

[英]How to save Excel Table as a Picture using vb.net?

我正在尝试将Excel工作表中的表格保存为图片。 有没有一种方法可以将该表放在剪贴板上并保存? 到目前为止,这是我所得到的,但是所引用的库不存在吗?

先感谢您!

-鲁本·拉米雷斯(Rueben Ramirez)

Public Sub extract_excelTable(ByRef data_file As String, ByRef app1 As excel.Application, ByRef sheet_name As String)
    'defining new app to prevent out of scope open applications
    Dim temp_app As excel.Application = app1
    Dim workbook As excel.Workbook = temp_app.Workbooks.Open(Path.GetFullPath(data_file))
    temp_app.Visible = False
    For Each temp_table As excel.DataTable In workbook.Worksheets(sheet_name)
        temp_table.Select()
        'temp_app.Selection.CopyAsPicture? 
    Next
End Sub

我不会在这里编写任何代码,但是我将为您概述一个可行的解决方案。 请注意,这不会重现excel文档的格式,只是简单地从中获取数据,然后将其以与excel文件相同的列/行顺序放在图像上。

步骤1:我对这个问题的解决方案是使用OLEDB连接从excel文件中读取数据,如本文第二个示例中所述: 从Excel文件中读取值

或者,如果文档太大而无法容纳在计算机的内存中,则可能需要在excel中打开该文档并将其重新保存为CSV。 我有一些代码可以将CSV读入C#的字符串列表中,这可能会对您有所帮助:

    static void Main(string[] args)
    {
        string Path = "C:/File.csv";

        System.IO.StreamReader reader = new System.IO.StreamReader(Path);

        //Ignore the header line
        reader.ReadLine();
        string[] vals;

        while (!reader.EndOfStream)
        {
            ReadText = reader.ReadLine();
            vals = SplitLine(ReadText);

            //Do some work here
        }
    }


    private static string[] SplitLine(string Line)
    {
        string[] vals = new string[42];
        string Temp = Line;

        for (int i = 0; i < 42; i++)
        {
            if (Temp.Contains(","))
            {
                if (Temp.Substring(0, Temp.IndexOf(",")).Contains("\""))
                {
                    vals[i] = Temp.Substring(1, Temp.IndexOf("\",", 1) - 1);

                    Temp = Temp.Substring(Temp.IndexOf("\",", 1) + 2);
                }
                else {
                    vals[i] = Temp.Substring(0, Temp.IndexOf(","));

                    Temp = Temp.Substring(Temp.IndexOf(",") + 1);
                }
            }
            else
            {
                vals[i] = Temp.Trim();
            }
        }

        return vals;
    }

步骤2:创建位图对象以创建图像,然后使用for循环将excel文档中的所有数据绘制到图像上。 这篇文章有一个使用drawstring方法执行此操作的示例: 如何在c#或vb.net中向图像添加文本

暂无
暂无

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

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