我正在努力完成这一部分,到目前为止这是我的过程,请帮助我。
private void copyAlltoClipboard()
{
G2.SelectAll();
DataObject dataObj = G2.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
private void btn_export_Click(object sender, EventArgs e)
{
copyAlltoClipboard();
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkBook = xlexcel.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
CR.Select();
xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
}
所以这是代码,它会将datagridview导出到excel(但是没有Header文本,我还需要使用头文本导出)。 对于上面的所有文本框,我也希望它们导出到Excel,我该怎么做?
答案 0 :(得分:1)
对于带有标题文字的Datagridview数据,您需要更改datagridview的ClipboardCopyMode
[230, '+', 10, '/', 2, '+', 34]
[67, '+', 10, '*', 2]
[67, '*', 10, '/', 230, '*', 60, '+', 34]
[67, '/', 230, '+', 60, '*', 2, '+', 34]
[67, '/', 230, '+', 2, '*', 60, '+', 34]
[34, '-', 67, '*', 2, '+', 230, '-', 10]
[34, '-', 67, '*', 2, '-', 10, '+', 230]
[34, '-', 2, '*', 67, '/', 10, '-', 60]
[34, '/', 230, '+', 67, '+', 10, '*', 2]
[34, '/', 230, '+', 10, '+', 67, '*', 2]
[34, '/', 60, '+', 67, '+', 10, '*', 2]
[34, '/', 60, '+', 10, '+', 67, '*', 2]
[34, '/', 2, '+', 67, '+', 60, '+', 10]
[34, '/', 2, '+', 67, '+', 10, '+', 60]
[34, '/', 2, '+', 60, '+', 67, '+', 10]
[34, '/', 2, '+', 60, '+', 10, '+', 67]
[34, '/', 2, '+', 10, '+', 67, '+', 60]
[34, '/', 2, '+', 10, '+', 60, '+', 67]
[60, '*', 2, '+', 34]
[60, '/', 230, '+', 67, '+', 10, '*', 2]
[60, '/', 230, '+', 10, '+', 67, '*', 2]
[60, '/', 34, '+', 230, '-', 67, '-', 10]
[60, '/', 34, '+', 230, '-', 10, '-', 67]
[60, '/', 34, '-', 67, '+', 230, '-', 10]
[60, '/', 34, '-', 67, '-', 10, '+', 230]
[60, '/', 34, '-', 10, '+', 230, '-', 67]
[60, '/', 34, '-', 10, '-', 67, '+', 230]
[60, '/', 34, '*', 67, '+', 10, '*', 2]
[60, '/', 34, '*', 10, '+', 67, '*', 2]
[2, '*', 60, '+', 34]
[10, '+', 230, '/', 2, '+', 34]
[10, '+', 67, '*', 2]
[10, '*', 67, '/', 230, '*', 60, '+', 34]
[10, '/', 230, '+', 60, '*', 2, '+', 34]
[10, '/', 230, '+', 2, '*', 60, '+', 34]
[10, '/', 67, '+', 60, '*', 2, '+', 34]
[10, '/', 67, '+', 2, '*', 60, '+', 34]
答案 1 :(得分:1)
除了您从中获取代码的原始内容:Export the dataGridView to Excel with all the cells format
您需要为主字段创建另一个HTML表,并将其与DataGridView的HTML表结合使用:
filter
答案 2 :(得分:0)
我不知道它是否适当的解决方案但是它有效。
只需添加以下功能(不要忘记用相应的变量替换字符串值)。如果要将数据移动到其他单元格或行,只需相应地更改制表符和换行符。
private void PrefixOtherDataToClipboard()
{
StringBuilder str = new StringBuilder();
//Replace appended strings with your corresponding variables
str.Append("Purchaser\t" + "P1"); str.AppendLine("\tReject Reason\t" + "bla bla bla..");
str.AppendLine("Date\t" + DateTime.Now);
str.AppendLine("PR#\t" + "23432");
str.AppendLine("Total Values\t" + "4234");
str.AppendLine("Status\t" + "Waiting");
str.AppendLine(Clipboard.GetText());
Clipboard.SetText(str.ToString());
}
现在,在将网格数据复制到剪贴板后,在copyAlltoClipboard()
中调用此函数
private void copyAlltoClipboard()
{
G2.SelectAll();
DataObject dataObj = G2.GetClipboardContent();
if (dataObj != null)
{
Clipboard.SetDataObject(dataObj);
PrefixOtherDataToClipboard();
}
}
注意:强>
如果您为网格视图单元格设置了任何格式,则在我以文本(String)的形式从/向剪贴板读取和写入时,它不会被复制到Excel中。