给"A1“单元格加注释

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using System.Windows.Forms;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Xml;
using System.IO;

namespace SpreadsheetDocumentComments
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            ILog log = log4net.LogManager.GetLogger(typeof(Program));
            string strPath = null;
            SaveFileDialog objSaveFileDialog = new SaveFileDialog();
            objSaveFileDialog.Filter = "Excel Document (*.xlsx)|*.xlsx";
            objSaveFileDialog.ShowDialog();
            strPath = objSaveFileDialog.FileName;
            if (strPath.Length > 0)
            {
                using (SpreadsheetDocument objDocument =
                    SpreadsheetDocument.Create(strPath,
SpreadsheetDocumentType.Workbook))
                {
                    WorkbookPart objWorkbookPart =
                        objDocument.AddWorkbookPart();
                    log.Info("Add WorkbookPart");
                    WorksheetPart objWorksheetPart =
                         objWorkbookPart.AddNewPart<WorksheetPart>();
                    log.Info("Add WorksheetPart");
                    string strWorkSheetPartrId =
                         objWorkbookPart.GetIdOfPart(objWorksheetPart);
                    log.Info("WorksheetPart's rId : " + strWorkSheetPartrId);
                    objWorksheetPart.Worksheet = new Worksheet();
                    SheetData objSheetData = new SheetData();
                    objWorksheetPart.Worksheet.Append(objSheetData);
                    Sheets objSheets = new Sheets();
                    Sheet objSheet = new Sheet()
                    {
                        Name = "MySheet",
                        SheetId = (UInt32Value)1U,
                        Id = strWorkSheetPartrId
                    };
                    objSheets.Append(objSheet);
                    objWorkbookPart.Workbook = new Workbook();
                    objWorkbookPart.Workbook.Append(objSheets);
                    WorksheetCommentsPart wcp = objWorksheetPart
                        .AddNewPart<WorksheetCommentsPart>();
                    log.Info("Add WorksheetCommentsPart");
                    wcp.Comments = new Comments();
                    Authors objAuthors = new Authors();
                    Author objAuthor = new Author();
                    objAuthor.Text = "Tx_OfficeDev";
                    objAuthors.Append(objAuthor);
                    CommentList cl = new CommentList();
                    Comment c = new Comment()
                    {
                        Reference = "A1",
                        AuthorId = (UInt32Value)0U
                    };
                    CommentText ct = new CommentText();
                    Run r1 = new Run();
                    Text t1 = new Text() { Text = "Tx_OfficeDev:" };
                    r1.Append(t1);
                    Run r2 = new Run();
                    Text t2 = new Text()
                    {
                        Text = "\nThis is a test!",
                        Space = SpaceProcessingModeValues.Preserve
                    };
                    r2.Append(t2);
                    ct.Append(r1);
                    ct.Append(r2);
                    c.Append(ct);
                    cl.Append(c);
                    wcp.Comments.Append(objAuthors);
                    wcp.Comments.Append(cl);
                    log.Info("WorksheetCommentsPart finished!");
                    VmlDrawingPart vdp = objWorksheetPart.AddNewPart<VmlDrawingPart>();
                    XmlTextWriter writer =
                        new XmlTextWriter(vdp.GetStream(FileMode.Create),
                            Encoding.UTF8);
                    writer.WriteRaw("<xml xmlns:v=\"urn:schemas-microsoft-com:vml\""
                        +"xmlns:o=\"urn:schemas-microsoft-com:office:office\""
                        +"xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"
                        +"<o:shapelayout v:ext=\"edit\">"
                        +"<o:idmap v:ext=\"edit\" data=\"1\"/>"
                        +"</o:shapelayout><v:shapetype id=\"_x0000_t202\" coordsize=\"21600,21600\" o:spt=\"202\""
                        +"path=\"m,l,21600r21600,l21600,xe\">"
                        +"<v:stroke joinstyle=\"miter\"/>"
                        +"<v:path gradientshapeok=\"t\" o:connecttype=\"rect\"/>"
                        +"</v:shapetype><v:shape id=\"_x0000_s1025\" type=\"#_x0000_t202\" style=\'position:absolute;"
                        +"margin-left:65.25pt;margin-top:1.5pt;width:270pt;height:59.25pt;z-index:1;"
                        +"visibility:hidden;mso-wrap-style:tight\' fillcolor=\"#ffffe1\" o:insetmode=\"auto\">"
                        +"<v:fill color2=\"#ffffe1\"/>"
                        +"<v:shadow on=\"t\" color=\"black\" obscured=\"t\"/>"
                        +"<v:path o:connecttype=\"none\"/>"
                        +"<v:textbox style=\'mso-direction-alt:auto\'>"
                        +"<div style=\'text-align:left\'></div>"
                        +"</v:textbox>"
                        +"<x:ClientData ObjectType=\"Note\">"
                        +"<x:MoveWithCells/>"
                        +"<x:SizeWithCells/>"
                        +"<x:Anchor>"
                        +"1, 15, 0, 2, 6, 15, 4, 9</x:Anchor>"
                        +"<x:AutoFill>False</x:AutoFill>"
                        +"<x:Row>0</x:Row>"
                        +"<x:Column>0</x:Column>"
                        +"</x:ClientData>"
                        +"</v:shape></xml>");
                    writer.Flush();
                    writer.Close();
                    log.Info("VmlPart finished!");
                    Row row = new Row()
                    {
                        RowIndex = (UInt32Value)1U,
                        Spans = new ListValue<StringValue>() 
                        {
                            InnerText = "1:1" 
                        }
                    };
                    objSheetData.Append(row);
                    string vmlrid = objWorksheetPart.GetIdOfPart(vdp);
                    log.Info("vdp rid : " + vmlrid);
                    LegacyDrawing ld = new LegacyDrawing() { Id = vmlrid };
                    objWorksheetPart.Worksheet.Append(ld);
                }
            }
            Console.ReadKey();
        }
    }
}

欢迎访问《许阳的红泥屋
posted @ 2012-07-09 20:53  许阳 无锡  阅读(237)  评论(0编辑  收藏  举报