我试图将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
答案 0 :(得分:0)
我不会在这里编写任何代码,但我会为您提供一个可行的解决方案。请注意,这不会重现excel文档的格式,只需从中获取数据,然后将其放在与excel文件相同的列/行顺序的图像上。
第1步: 我对此问题的解决方案是使用OLEDB连接从excel文件中读取数据,如本文第二个示例所述:Reading values from an Excel File
或者,您可能需要在Excel中打开文档,如果文档太大而无法放入计算机的内存中,请将其重新保存为CSV格式。我有一些代码可以在C#中将CSV读入字符串列表中,可以帮助您:
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文档中的所有数据绘制到图像上。这篇文章有一个使用抽绳方法的例子:how do i add text to image in c# or vb.net