C# 導出Word


導出word文檔(無模版):

using Microsoft.Office.Interop.Word;

        public static string CreateWordFile(CaseVM model,string path)
        {
            string message = "";
            try
            {
                Object Nothing = System.Reflection.Missing.Value;
                //Directory.CreateDirectory("C:/CNSI");  //創建文件所在目錄
                //string name = "CNSI_" + DateTime.Now.ToLongDateString() + ".doc";
                object filename = path;  //文件保存路徑
                //創建Word文檔
                Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
                Microsoft.Office.Interop.Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                
                //添加頁眉
                WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
                WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
                WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[國泰安理財規划大賽案例]");
                WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//設置右對齊
                WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出頁眉設置

                WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//設置文檔的行間距

                //移動焦點並換行
                object count = 14;
                object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//換一行;
                WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點

                // 插入段落
                Microsoft.Office.Interop.Word.Paragraph para;
                para = WordDoc.Content.Paragraphs.Add(ref Nothing);


                para.Range.Text = "案例信息";
                //para.Range.Font.Size = 20;
                para.Range.Font.Bold = 2;  
                para.Range.Font.Color = WdColor.wdColorRed;  
                para.Range.Font.Italic = 2;  
                para.Range.InsertParagraphAfter();
                //WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

                para.Range.Text = "客戶姓名:" + model.CustomerName;
                //para.Range.Font.Size = 12;
                para.Range.Font.Bold = 1;
                para.Range.Font.Color = WdColor.wdColorBlack;
                para.Range.Font.Italic = 0;  
                para.Range.InsertParagraphAfter();

                para.Range.Text = "身份證號:" + model.IDNum;
                para.Range.InsertParagraphAfter();

                para.Range.Text = "理財類型:" + model.strFinancialType;
                para.Range.InsertParagraphAfter();

                para.Range.Text = "客戶背景:" + model.CustomerStory;
                para.Range.InsertParagraphAfter();

                WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點
                WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點

                para.Range.Text = "考核點";
                para.Range.Font.Bold = 2;
                para.Range.Font.Color = WdColor.wdColorRed;
                para.Range.Font.Italic = 2;
                para.Range.InsertParagraphAfter();
                WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點

                para.Range.Font.Bold = 1;
                para.Range.Font.Color = WdColor.wdColorBlack;
                para.Range.Font.Italic = 0;  
                //文檔中創建表格
                Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 200, 4, ref Nothing, ref Nothing);
                //設置表格樣式
                newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleThickThinLargeGap;
                newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                newTable.Columns[1].Width = 50f;
                newTable.Columns[2].Width = 50f;
                newTable.Columns[3].Width = 160f;
                newTable.Columns[4].Width = 160f;

                //填充表格內容
                newTable.Cell(1, 1).Range.Text = "序號";
                newTable.Cell(1, 1).Range.Bold = 2;//設置單元格中字體為粗體
                //合並單元格
                //newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
                WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
                WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
                newTable.Cell(1, 2).Range.Text = "類型";
                newTable.Cell(1, 2).Range.Bold = 2;//設置單元格中字體為粗體
                //合並單元格
                //newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
                WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
                WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
                newTable.Cell(1, 3).Range.Text = "考點";
                newTable.Cell(1, 3).Range.Bold = 2;//設置單元格中字體為粗體
                //合並單元格
                //newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
                WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
                WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
                newTable.Cell(1, 4).Range.Text = "答案";
                newTable.Cell(1, 4).Range.Bold = 2;//設置單元格中字體為粗體
                //合並單元格
                //newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
                WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
                WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

                int i = 1;
                foreach (var item in model.ExamPointAnswer)
                {
                    i++;
                    //填充表格內容
                    newTable.Cell(i, 1).Range.Text =(i-1).ToString();
                    WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                    newTable.Cell(i, 2).Range.Text = item.strExamType;
                    WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                    newTable.Cell(i, 3).Range.Text = item.strExamPoint;
                    WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                    newTable.Cell(i, 4).Range.Text = item.Answer;
                    WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                }





                ////填充表格內容
                //newTable.Cell(2, 1).Range.Text = "產品基本信息";
                //newTable.Cell(2, 1).Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;//設置單元格內字體顏色
                ////合並單元格
                //newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
                //WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;

                ////填充表格內容
                //newTable.Cell(3, 1).Range.Text = "品牌名稱:";
                //newTable.Cell(3, 2).Range.Text = "BrandName";
                ////縱向合並單元格
                //newTable.Cell(3, 3).Select();//選中一行
                //object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
                //object moveCount = 5;
                //object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
                //WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
                //WordApp.Selection.Cells.Merge();
                ////////插入圖片
                //////string FileName = @"c:\picture.jpg";//圖片所在路徑
                //////object LinkToFile = false;
                //////object SaveWithDocument = true;
                //////object Anchor = WordDoc.Application.Selection.Range;
                //////WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
                //////WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//圖片寬度
                //////WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//圖片高度
                ////////將圖片設置為四周環繞型
                //////Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
                //////s.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;

                //newTable.Cell(12, 1).Range.Text = "產品特殊屬性";
                //newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
                ////在表格中增加行
                //WordDoc.Content.Tables[1].Rows.Add(ref Nothing);

                //WordDoc.Paragraphs.Last.Range.Text = "文檔創建時間:" + DateTime.Now.ToString();//“落款”
                //WordDoc.Paragraphs.Last.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;

                //文件保存
                WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
                WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
                //message = name + "文檔生成成功,以保存到C:CNSI下";
            }
            catch
            {
                message = "文件導出異常!";
            }
            return message;
        }

MS參照:http://www.cnblogs.com/haoxuan/articles/5135599.html

 

using Aspose.Words;

public static string CreateWordFile2(CaseVM model, string path)
        {
            string message = "";
            try
            {
                Aspose.Words.Document doc = new Aspose.Words.Document();
                DocumentBuilder builder = new DocumentBuilder(doc);

                builder.PageSetup.DifferentFirstPageHeaderFooter = true;
                builder.PageSetup.OddAndEvenPagesHeaderFooter = true;
                builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
                builder.Font.Color = Color.Blue;
                builder.Font.Size = 12;
                builder.Write("[國泰安理財規划大賽案例]");
                builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

                builder.MoveToDocumentStart();
                builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                builder.Font.Color = Color.Red;
                builder.Font.Bold = true;
                builder.Font.Italic = true;
                builder.Writeln("案例信息");
                builder.InsertBreak(BreakType.LineBreak);

                builder.Font.Color = Color.Black;
                builder.Font.Bold = false;
                builder.Font.Italic = false;
                builder.Writeln("客戶姓名:" + model.CustomerName);
                builder.Writeln("身份證號:" + model.IDNum);
                builder.Writeln("理財類型:" + model.strFinancialType);
                builder.Writeln("客戶背景:" + model.CustomerStory);
                builder.InsertBreak(BreakType.LineBreak);

                builder.Font.Color = Color.Red;
                builder.Font.Bold = true;
                builder.Font.Italic = true;
                builder.Writeln("考核點");
                builder.InsertBreak(BreakType.LineBreak);
                builder.Font.Color = Color.Black;
                builder.Font.Bold = false;
                builder.Font.Italic = false;

                
                builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                builder.CellFormat.Borders.Color = Color.Black;

                builder.InsertCell();
                builder.Write("序號");
                builder.InsertCell();
                builder.Write("類型");
                builder.InsertCell();
                builder.Write("考點");
                builder.InsertCell();
                builder.Write("答案");
                builder.EndRow();

                int i = 1;
                foreach (var item in model.ExamPointAnswer)
                {
                    i++;
                    builder.InsertCell();
                    builder.Write((i - 1).ToString());
                    builder.InsertCell();
                    builder.Write(item.strExamType == null ? "" : item.strExamType);
                    builder.InsertCell();
                    builder.Write(item.strExamPoint == null ? "" : item.strExamPoint);
                    builder.InsertCell();
                    builder.Write(item.Answer == null ? "" : item.Answer);
                    builder.EndRow();
                }
                builder.EndTable();
                doc.Save(path);

            }
            catch
            {
                message = "文件導出異常!";
            }
            return message;
        }

Aspose參照(含源碼):http://blog.csdn.net/fraing/article/details/8989736

 

根據數據導出word文檔(有模版):

Aspose參照:http://www.cnblogs.com/jingshuisihan/p/4604260.html

MS參照:http://bbs.csdn.net/topics/390946804?page=1

 

導入xls/xlsx到DataTable:

HSSFWorkbook: http://www.cnblogs.com/songrun/p/3547738.html

 

OLEDB:

HDR=Yes,這代表第一行是標題,不做為數據使用;IMEX ( IMport EXport mode )設置
  IMEX 有三種模式:
  0 is Export mode
  1 is Import mode
  2 is Linked mode (full update capabilities)
  我這里特別要說明的就是 IMEX 參數了,因為不同的模式代表著不同的讀寫行為:
  當 IMEX=0 時為“匯出模式”,這個模式開啟的 Excel 檔案只能用來做“寫入”用途。
  當 IMEX=1 時為“匯入模式”,這個模式開啟的 Excel 檔案只能用來做“讀取”用途。
  當 IMEX=2 時為“連結模式”,這個模式開啟的 Excel 檔案可同時支援“讀取”與“寫入”用途。

 

Aspose:

        /// <summary>
        /// HSSFWorkbook讀取xls
        /// </summary>
        /// <param name="filepath">文件路徑</param>
        /// <returns></returns>
        public static DataTable GetExcelToDataTableByNPOI(string filepath)
        {
            NPOI.HSSF.UserModel.HSSFWorkbook hssworkbook;
            using (FileStream file = new FileStream(filepath, FileMode.Open, FileAccess.Read))
            {
                hssworkbook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
            }
            ISheet sheet = hssworkbook.GetSheetAt(0);
            IRow headerRow = sheet.GetRow(0);
            int rowCount = sheet.LastRowNum;
            int cellCount = headerRow.LastCellNum;
            DataTable dt = new DataTable();
            for (int j = 0; j < cellCount; j++)
            {
                dt.Columns.Add(Convert.ToChar(((int)('A')) + j).ToString());
            }
            for (int r = (sheet.FirstRowNum + 1); r <= rowCount; r++)
            {
                IRow row = sheet.GetRow(r);  //讀取當前行數據
                if (row != null)
                {
                    DataRow dr = dt.NewRow();
                    cellCount = row.LastCellNum;
                    bool isCellNull = true;
                    for (int i = 0; i < cellCount; i++)
                    {
                        ICell cell = row.GetCell(i);
                        if (cell == null)
                        {
                            dr[i] = "";
                        }
                        else
                        {
                            cell.SetCellType(NPOI.SS.UserModel.CellType.STRING);
                            dr[i] = cell.StringCellValue;
                            if (isCellNull)
                            {
                                if (!string.IsNullOrWhiteSpace(cell.StringCellValue))
                                {
                                    isCellNull = false;
                                }
                            }
                        }
                    }
                    if (!isCellNull)
                    {
                        dt.Rows.Add(dr);
                    }
                }
            }
            return dt;
        }

        /// <summary>
        /// OleDb讀取xls/xlsx
        /// </summary>
        /// <param name="filepath">文件路徑</param>
        /// <returns></returns>
        public static DataTable GetExcelToDataTableByOleDb(string filepath)
        {
            string strCon = "";
            if (filepath.IndexOf(".xlsx") != -1)
                strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filepath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
            else if (filepath.IndexOf(".xls") != -1)
                strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filepath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";

            string strCom = " SELECT * FROM [Sheet1$]";

            DataTable dt_temp = new DataTable();
            using (OleDbConnection myConn = new OleDbConnection(strCon))
            using (OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn))
            {
                myConn.Open();
                myCommand.Fill(dt_temp);
            }

            return dt_temp;
        }


        /// <summary>
        /// Aspose讀取xls/xlsx
        /// </summary>
        /// <param name="filepath">文件路徑</param>
        /// <returns></returns>
        public static DataTable GetExcelToDataTableByAspose(string filepath)
        {
            DataTable dt_temp = new DataTable();
            try
            {
                Aspose.Cells.Workbook oBook = new Aspose.Cells.Workbook(filepath);
                Cells cells = oBook.Worksheets[0].Cells;
                dt_temp = cells.ExportDataTable(0, 0, cells.MaxDataRow + 1, cells.MaxColumn + 1);
            }
            catch (Exception ex)
            {
            }
            return dt_temp;
        }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM