利用OpenXML向Excel單元格插入內(nèi)容_第1頁
利用OpenXML向Excel單元格插入內(nèi)容_第2頁
利用OpenXML向Excel單元格插入內(nèi)容_第3頁
利用OpenXML向Excel單元格插入內(nèi)容_第4頁
利用OpenXML向Excel單元格插入內(nèi)容_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

利用OpenXML向Excel單元格插入內(nèi)容利用OpenXML向Excel單元格插入內(nèi)容利用OpenXML向Excel單元格插入內(nèi)容xxx公司利用OpenXML向Excel單元格插入內(nèi)容文件編號(hào):文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度利用OpenXML向Excel單元格插入內(nèi)容編譯本主題中的代碼需要以下程序集指令:using;using;using獲取SpreadsheetDocument對(duì)象在OpenXMLSDK中,SpreadsheetDocument類表示Excel文檔包。若要打開并使用Excel文檔,請(qǐng)基于文檔創(chuàng)建SpreadsheetDocument類的一個(gè)實(shí)例?;谖臋n創(chuàng)建實(shí)例后,即可獲取對(duì)包含工作表的主工作簿部件的訪問權(quán)限。在此包中,使用SpreadsheetML標(biāo)記將文檔中的文本表示為XML形式。若要從文檔中創(chuàng)建類實(shí)例,請(qǐng)調(diào)用Open重載方法之一。提供了多個(gè)方法,每個(gè)方法都有不同的簽名。本主題中的示例代碼使用帶有需要兩個(gè)參數(shù)的簽名的Open(String,Boolean)方法。第一個(gè)參數(shù)采用表示要打開的文檔的完整路徑字符串。第二個(gè)參數(shù)是true或false,表示是否要打開文件以進(jìn)行編輯。如果此參數(shù)為false,則不會(huì)保存對(duì)該文檔所做的任何更改。下面的using語句中顯示了調(diào)用Open方法的代碼。C#using(SpreadsheetDocumentspreadSheet=(docName,true)){}using語句提供典型.Open,.Save,.Close序列的建議備選序列。它確保在遇到右大括號(hào)時(shí)會(huì)自動(dòng)調(diào)用Dispose方法(OpenXMLSDK用來清理資源的內(nèi)部方法)。using語句后面的塊為using語句中創(chuàng)建或指定的對(duì)象設(shè)定范圍,在此示例中這個(gè)范圍就是spreadSheet。SpreadsheetML文檔的基本結(jié)構(gòu)SpreadsheetML文檔的基本文檔結(jié)構(gòu)由引用工作簿中的工作表的Sheets和Sheet元素組成。將為每個(gè)Worksheet創(chuàng)建單獨(dú)的XML文件。例如,具有MySheet1和MySheet2這兩張工作表的Workbook的SpreadsheetML位于文件中,并且顯示在以下代碼示例中。XML<xmlversion=""encoding="UTF-8"standalone="yes"><workbookxmlns=xmlns:r=""><sheets><sheetname="MySheet1"sheetId="1"r:id="rId1"/><sheetname="MySheet2"sheetId="2"r:id="rId2"/></sheets></workbook>工作表XML文件包含一個(gè)或多個(gè)塊級(jí)元素(如SheetData)。sheetData表示單元格表,并且包含一個(gè)或多個(gè)Row元素。一個(gè)row包含一個(gè)或多個(gè)Cell元素。每個(gè)單元格包含一個(gè)表示相應(yīng)單元格值的CellValue元素。例如,工作簿中只在單元格A1中具有值100的第一張工作表的SpreadsheetML位于文件中,并且顯示在以下代碼示例中。XML<xmlversion=""encoding="UTF-8"><worksheetxmlns=""><sheetData><rowr="1"><cr="A1"><v>100</v></c></row></sheetData></worksheet>示例代碼的工作方式打開SpreadsheetDocument文檔進(jìn)行編輯后,代碼將空的Worksheet對(duì)象插入到SpreadsheetDocument文檔包中。然后,將新的Cell對(duì)象插入到新工作表中并將指定的文本插入到該單元格中。C#publicstaticvoidInsertText(stringdocName,stringtext){Imports(SpreadsheetDocumentspreadSheet=(docName,true)){Ifitdoesnotexist,createanewone.SharedStringTablePartshareStringPart;if>0){shareStringPart=}else{shareStringPart=}intindex=InsertSharedStringItem(text,shareStringPart);WorksheetPartworksheetPart=InsertWorksheet;Cellcell=InsertCellInWorksheet("A",1,worksheetPart);=newCellValue());=newEnumValue<CellValues>;}}代碼傳入一個(gè)表示要插入到單元格中的文本的參數(shù)和一個(gè)表示電子表格的SharedStringTablePart對(duì)象的參數(shù)。如果ShareStringTablePart對(duì)象不包含SharedStringTable對(duì)象,則代碼創(chuàng)建一個(gè)。如果文本已存在于ShareStringTable對(duì)象中,則代碼返回表示文本的SharedStringItem對(duì)象的索引。否則,它創(chuàng)建表示文本的新SharedStringItem對(duì)象。下面的代碼驗(yàn)證指定的文本是否存在于SharedStringTablePart對(duì)象中,并在不存在時(shí)添加文本。C#Iftheitemalreadyexists,returnsitsindex.privatestaticintInsertSharedStringItem(stringtext,SharedStringTablePartshareStringPart){if==null){=newSharedStringTable();}inti=0;Ifthetextalreadyexists,returnitsindex.foreach(SharedStringItemitemin{if==text){returni;}i++;}CreatetheSharedStringItemandreturnitsindex.SharedStringItem(newreturni;}代碼使用AddNewPart方法向WorkbookPart對(duì)象添加新WorksheetPart對(duì)象。然后向WorksheetPart對(duì)象添加新Worksheet對(duì)象,并通過以下方式獲取新工作表的唯一ID:選擇在電子表格文檔中使用的最大SheetId對(duì)象并加1以創(chuàng)建新工作表ID。它通過將“Sheet”一詞和工作表ID連接在一起來指定工作表的名稱。它然后將新Sheet對(duì)象追加到Sheets集合。下面的代碼通過將新的WorksheetPart對(duì)象添加到WorkbookPart對(duì)象中來插入新的Worksheet對(duì)象。C#privatestaticWorksheetPartInsertWorksheet(WorkbookPartworkbookPart){WorksheetPartnewWorksheetPart=<WorksheetPart>();=newWorksheet(newSheetData());Sheetssheets=stringrelationshipId=(newWorksheetPart);uintsheetId=1;if<Sheet>().Count()>0){sheetId=<Sheet>().Select(s=>+1;}stringsheetName="Sheet"+sheetId;Sheetsheet=newSheet(){Id=relationshipId,SheetId=sheetId,Name=sheetName};(sheet);returnnewWorksheetPart;}為了將單元格插入到工作表中,代碼通過按順序循環(huán)訪問行元素以查找緊跟在指定行后面的單元格來確定要將新單元格插入到列中的位置。它將此行保存在refCell變量中。然后使用InsertBefore方法將新單元格插入到refCell方法引用的單元格之前。在下面的代碼中,將新的Cell對(duì)象插入到Worksheet對(duì)象中。C#privatestaticCellInsertCellInWorksheet(stringcolumnName,uintrowIndex,WorksheetPartworksheetPart){Worksheetworksheet=;SheetDatasheetData=<SheetData>();stringcellReference=columnName+rowIndex;Rowrow;if<Row>().Where(r=>==rowIndex).Count()!=0){row=<Row>().Where(r=>==rowIndex).First();}else{row=newRow(){RowIndex=rowIndex};(row);}if<Cell>().Where(c=>==columnName+rowIndex).Count()>0){return<Cell>().Where(c=>==cellReference).First();}else{Determinewheretoinsertthenewcell.CellrefCell=null;foreach(Cellcellin<Cell>()){ifcellReference,true)>0){refCell=cell;break;}}CellnewCell=newCell(){CellReference=cellReference};(newCell,refCell);();returnnewCell;}}示例代碼以下代碼示例用于插入新工作表并將文本寫入到名為“”的特定電子表格文檔的新工作表的單元格“A1”中。若要調(diào)用InsertText方法,可以使用以下代碼作為示例。C#InsertText(@"C:\Users\Public\Documents\","InsertedText");以下是使用C#和VisualBasic編寫的完整示例代碼。C#publicstaticvoidInsertText(stringdocName,stringtext){using(SpreadsheetDocumentspreadSheet=(docName,true)){Ifitdoesnotexist,createanewone.SharedStringTablePartshareStringPart;if>0){shareStringPart=}else{shareStringPart=}intindex=InsertSharedStringItem(text,shareStringPart);WorksheetPartworksheetPart=InsertWorksheet;Cellcell=InsertCellInWorksheet("A",1,worksheetPart);=newCellValue());=newEnumValue<CellValues>;}}Iftheitemalreadyexists,returnsitsindex.privatestaticintInsertSharedStringItem(stringtext,SharedStringTablePartshareStringPart){if==null){=newSharedStringTable();}inti=0;Ifthetextalreadyexists,returnitsindex.foreach(SharedStringItemitemin{if==text){returni;}i++;}CreatetheSharedStringItemandreturnitsindex.SharedStringItem(newreturni;}privatestaticWorksheetPartInsertWorksheet(WorkbookPartworkbookPart){WorksheetPartnewWorksheetPart=<WorksheetPart>();=newWorksheet(newSheetData());Sheetssheets=stringrelationshipId=(newWorksheetPart);uintsheetId=1;if<Sheet>().Count()>0){sheetId=<Sheet>().Select(s=>+1;}stringsheetName="Sheet"+sheetId;Sheetsheet=newSheet(){Id=relationshipId,SheetId=sheetId,Name=sheetName};(sheet);returnnewWorksheetPart;}privatestaticCellInsertCellInWorksheet(stringcolumnName,uintrowIndex,WorksheetPartworksheetPart){Worksheetworksheet=;SheetDatasheetData=<SheetData>();stringcellReference=columnName+rowIndex;Rowrow;if<Row>().Where(r=>==rowIndex).Count()!=0){row=<Row>().Where(r=>==rowIn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論