企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
``` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using crl = System.Runtime.InteropServices.Marshal; //ReleaseComObject(Object O) namespace 脚本编辑器_Excel追加数据 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var obj = new { Name = "lily", Age = 12 }; appendInfoToFile(Application.StartupPath + @"\" + "vjshi销售统计表.xlsx"); } //何新建一个excel,写入header行,然后已经保存好了 public void createOutputFile(string excelFullFilename) { bool isAutoFit = true; bool isHeaderBold = true; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); const int excelRowHeader = 1; const int excelColumnHeader = 1; //save header int curColumnIdx = 0 + excelColumnHeader; int rowIdx = 0 + excelRowHeader; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "Title"; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "Description"; const int constBullerLen = 5; for (int bulletIdx = 0; bulletIdx < constBullerLen; bulletIdx++) { int bulletNum = bulletIdx + 1; xlWorkSheet.Cells[rowIdx, curColumnIdx + bulletIdx] = "Bullet" + bulletNum.ToString(); } curColumnIdx = curColumnIdx + constBullerLen; const int constImgNameListLen = 5; for (int imgIdx = 0; imgIdx < constImgNameListLen; imgIdx++) { int imgNum = imgIdx + 1; xlWorkSheet.Cells[rowIdx, curColumnIdx + imgIdx] = "ImageFilename" + imgNum.ToString(); } curColumnIdx = curColumnIdx + constImgNameListLen; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "HighestPrice"; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "OneSellerIsAmazon"; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "ReviewNumber"; xlWorkSheet.Cells[rowIdx, curColumnIdx++] = "IsBestSeller"; //formatting //(1) header to bold if (isHeaderBold) { Excel.Range headerRow = xlWorkSheet.get_Range("1:1", System.Type.Missing); headerRow.Font.Bold = true; } //(2) auto adjust column width (according to content) if (isAutoFit) { Excel.Range allColumn = xlWorkSheet.Columns; allColumn.AutoFit(); } //output xlWorkBook.SaveAs(excelFullFilename, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); crl.ReleaseComObject(xlWorkSheet); crl.ReleaseComObject(xlWorkBook); crl.ReleaseComObject(xlApp); } //打开已经存在的一个excel,并且找到最后一行,然后按行,继续添加内容。 public void appendInfoToFile(string fullFilename)//AmazonProductInfo productInfo1 { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object missingVal = System.Reflection.Missing.Value; xlApp = new Microsoft.Office.Interop.Excel.Application(); //xlApp.Visible = true; //xlApp.DisplayAlerts = false; //http://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.workbooks.open%28v=office.11%29.aspx xlWorkBook = xlApp.Workbooks.Open( Filename: fullFilename, //UpdateLinks:3, ReadOnly: false, //Format : 2, //use Commas as delimiter when open text file //Password : missingVal, //WriteResPassword : missingVal, //IgnoreReadOnlyRecommended: false, //when save to readonly, will notice you Origin: Excel.XlPlatform.xlWindows, //xlMacintosh/xlWindows/xlMSDOS //Delimiter: ",",  // usefule when is text file Editable: true, Notify: false, //Converter: missingVal, AddToMru: true, //True to add this workbook to the list of recently used files Local: true, CorruptLoad: missingVal //xlNormalLoad/xlRepairFile/xlExtractData ); //Get the first sheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //also can get by sheet name Excel.Range range = xlWorkSheet.UsedRange; //int usedColCount = range.Columns.Count; int usedRowCount = range.Rows.Count; const int excelRowHeader = 1; const int excelColumnHeader = 1; //int curColumnIdx = usedColCount + excelColumnHeader; int curColumnIdx = 0 + excelColumnHeader; //start from column begin int curRrowIdx = usedRowCount + excelRowHeader; // !!! here must added buildin excelRowHeader=1, otherwise will overwrite previous (added title or whole row value) curRrowIdx = curRrowIdx + 1; xlWorkSheet.Cells[curRrowIdx, curColumnIdx] = "222";//productInfo.title; xlWorkSheet.Cells[curRrowIdx, ++curColumnIdx] = "333"; xlWorkSheet.Cells[curRrowIdx, ++curColumnIdx] = "444"; //xlWorkSheet.Cells[curRrowIdx, curColumnIdx++] = "333";//productInfo.description; /* const int constBullerLen = 5; int bulletListLen = 0; if (productInfo.bulletArr.Length > constBullerLen) { bulletListLen = constBullerLen; } else { bulletListLen = productInfo.bulletArr.Length; } for (int bulletIdx = 0; bulletIdx < bulletListLen; bulletIdx++) { xlWorkSheet.Cells[curRrowIdx, curColumnIdx + bulletIdx] = productInfo.bulletArr[bulletIdx]; } curColumnIdx = curColumnIdx + bulletListLen; const int constImgNameListLen = 5; int imgNameListLen = 0; if (productInfo.imgFullnameArr.Length > constImgNameListLen) { imgNameListLen = constImgNameListLen; } else { imgNameListLen = productInfo.imgFullnameArr.Length; } for (int imgIdx = 0; imgIdx < imgNameListLen; imgIdx++) { xlWorkSheet.Cells[curRrowIdx, curColumnIdx + imgIdx] = productInfo.imgFullnameArr[imgIdx]; } curColumnIdx = curColumnIdx + imgNameListLen; xlWorkSheet.Cells[curRrowIdx, curColumnIdx++] = productInfo.highestPrice; xlWorkSheet.Cells[curRrowIdx, curColumnIdx++] = productInfo.isOneSellerIsAmazon; xlWorkSheet.Cells[curRrowIdx, curColumnIdx++] = productInfo.reviewNumber; xlWorkSheet.Cells[curRrowIdx, curColumnIdx++] = productInfo.isBestSeller; */ ////http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k%28MICROSOFT.OFFICE.INTEROP.EXCEL._WORKBOOK.SAVEAS%29;k%28SAVEAS%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV3.5%22%29;k%28DevLang-CSHARP%29&rd=true //xlWorkBook.SaveAs( //    Filename: fullFilename, //    ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges //The local user's changes are always accepted. //    //FileFormat : Excel.XlFileFormat.xlWorkbookNormal //); //if use above SaveAs -> will popup a window ask you overwrite it or not, even if you have set the ConflictResolution to xlLocalSessionChanges, which should not ask, should directly save xlWorkBook.Save(); //http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k%28MICROSOFT.OFFICE.INTEROP.EXCEL._WORKBOOK.CLOSE%29;k%28CLOSE%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV3.5%22%29;k%28DevLang-CSHARP%29&rd=true xlWorkBook.Close(SaveChanges: true); crl.ReleaseComObject(xlWorkSheet); crl.ReleaseComObject(xlWorkBook); crl.ReleaseComObject(xlApp); //releaseObject } } } ```