2

データ テーブルから Excel シートにデータをエクスポートする必要があり、同じシートに折れ線グラフを表示する必要もあります。私の質問は、データとチャートを同じシートに表示するにはどうすればよいかということです。

私はNPOIライブラリバージョン1.2.5.0とdotnet 2.0を使用しています。このようにNPOIライブラリを使用して、データテーブルからExcelにデータをエクスポートできました。これが私のサンプルコードです。

class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("First Name", typeof(string));
            dt.Columns.Add("Last Name", typeof(string));
            dt.Columns.Add("Salary", typeof(double));

            DataRow dr = null;
            dr = dt.NewRow();
            dr[0] = "Konna";
            dr[1] = "Lombard";
            dr[2] = "3000";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "Tunip";
            dr[1] = "Mansar";
            dr[2] = "4000";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "Dobby";
            dr[1] = "Bhell";
            dr[2] = "5000";
            dt.Rows.Add(dr);

            Utility.Export(dt, "Result");

        }
    }

public static class Utility
    {
        public static string GetParentDirectory()
        {
            System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory);
            return myDirectory.Parent.Parent.FullName;
        }

        public static void Export( DataTable dt,string strSheetName)
        {
            try
            {
                HSSFWorkbook workbook = new HSSFWorkbook();
                HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(strSheetName);
                HSSFRow headerRow = (HSSFRow) sheet.CreateRow(0);

                IFont font = workbook.CreateFont();
                font.FontHeightInPoints = 14;
                font.FontName = "Calibri";
                font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;

                ICell titleCell = headerRow.CreateCell(0);
                titleCell.SetCellValue("Daily Finished Job History " + DateTime.Now.ToString("dd/MM/yyyy"));
                titleCell.CellStyle = workbook.CreateCellStyle();
                titleCell.CellStyle.SetFont(font);
                sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dt.Columns.Count));

                int rowIndex = 2;
                HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
                foreach (DataColumn column in dt.Columns)
                {
                    font = workbook.CreateFont();
                    font.FontHeightInPoints = 11;
                    font.FontName = "Calibri";
                    font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;

                    titleCell = dataRow.CreateCell(column.Ordinal);
                    titleCell.SetCellValue(column.ColumnName);
                    titleCell.CellStyle = workbook.CreateCellStyle();
                    titleCell.CellStyle.SetFont(font);

                    sheet.AutoSizeColumn(column.Ordinal);
                }
                rowIndex = 3;

                foreach (DataRow row in dt.Rows)
                {
                    dataRow = (HSSFRow)sheet.CreateRow(rowIndex);

                    foreach (DataColumn column in dt.Columns)
                    {
                        font = workbook.CreateFont();
                        font.FontHeightInPoints = 11;
                        font.FontName = "Calibri";
                        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.NORMAL;

                        titleCell = dataRow.CreateCell(column.Ordinal);
                        titleCell.SetCellValue(row[column].ToString());
                        titleCell.CellStyle = workbook.CreateCellStyle();
                        titleCell.CellStyle.SetFont(font);

                        sheet.AutoSizeColumn(column.Ordinal);
                    }

                    rowIndex++;
                }



                string strParentDirectory = GetParentDirectory();
                strParentDirectory = strParentDirectory + "\\Data";
                if (!Directory.Exists(strParentDirectory))
                {
                    Directory.CreateDirectory(strParentDirectory );
                }
                string strFileName = strParentDirectory + "\\DailyFinishedJobHistory_" + DateTime.Now.ToString("yyyyMMdd")+".xls";
                if (File.Exists(strFileName))
                {
                    File.Delete(strFileName);
                }
                FileStream file = new FileStream(strFileName, FileMode.Create);
                workbook.Write(file);

                file.Close();
                headerRow = null;
                sheet = null;
                workbook = null;
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
            finally
            {
                dt.Dispose();
            }
        }
    }

今、私のExcelデータは次のようになります ここに画像の説明を入力

しかし、データとチャートの両方が同じシートにあるこの種のExcelファイルを生成する必要があります。これがスクリーンショットです。

ここに画像の説明を入力

4

2 に答える 2

0

LineChart は NPOI 2.1 でサポートされます。2014年6月発売予定

于 2014-05-21T04:53:04.543 に答える