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();
}
}
}
欢迎访问《 许阳的红泥屋》