示例#1
0
        private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            var selectedRange = LatexTable.Globals.ThisAddIn.Application.Selection as Microsoft.Office.Interop.Excel.Range;
            var selectedAreas = selectedRange.Areas as Microsoft.Office.Interop.Excel.Areas;

            bool enable_hide_skip = skipHidden.Checked;

            RangeConvert rc  = new RangeConvert(selectedAreas[1], enable_hide_skip);
            Tabular      tab = new Tabular(rc);
            Table        tb  = new Table();

            tb.has_centering   = enableCentering.Checked;
            tb.has_caption     = hasCaption.Checked;
            tb.caption_content = Caption.Text;

            tb.has_label     = hasLabel.Checked;
            tb.label_content = Label.Text;

            tb.resize   = fitWidth.Checked;
            tb.position = position.Text;


            Clipboard.SetText(string.Join("\n", tb.Create_table(tab)));
            // MessageBox.Show(tb_buff);
        }
示例#2
0
        private void SaveFileButton_Click(object sender, RibbonControlEventArgs e)
        {
            var selectedRange = LatexTable.Globals.ThisAddIn.Application.Selection as Microsoft.Office.Interop.Excel.Range;
            var selectedAreas = selectedRange.Areas as Microsoft.Office.Interop.Excel.Areas;

            bool enable_hide_skip = !skipHidden.Checked;

            RangeConvert rc  = new RangeConvert(selectedAreas[1], enable_hide_skip);
            Tabular      tab = new Tabular(rc);
            Table        tb  = new Table()
            {
                has_centering   = enableCentering.Checked,
                has_caption     = hasCaption.Checked,
                caption_content = Caption.Text,
                has_label       = hasLabel.Checked,
                label_content   = Label.Text,
                resize          = fitWidth.Checked,
                position        = position.Text
            };

            // Generate SaveFileDialog
            SaveFileDialog sa = new SaveFileDialog();

            sa.Title       = "Save Table as File";
            sa.FileName    = @"table.tex";
            sa.Filter      = "Latex File(*.tex)|*.tex|All Files(*.*)|*.*";
            sa.FilterIndex = 1;

            // Show Dialog
            DialogResult result = sa.ShowDialog();

            if (result == DialogResult.OK)
            {
                string fileName = sa.FileName;
                var    writer   = new System.IO.StreamWriter(fileName, false);
                writer.WriteLine(string.Join("\n", tb.Create_table(tab)));
                writer.Close();
            }
            else if (result == DialogResult.Cancel)
            {
            }
        }
示例#3
0
        public Tabular(RangeConvert tb_dataset)
        {
            // 初期化
            colnum = tb_dataset.colnum;
            rownum = tb_dataset.rownum;
            // 内部のコンテンツリスト
            contents = new List <string> [rownum];
            for (int i = 0; i < tb_dataset.rownum; i++)
            {
                contents[i] = new List <string>();
            }
            // 列の水平罫線リスト
            hrule_lines = new string[rownum];
            LineType[] hrule_linetypes = new LineType[colnum];


            // 表の上の罫線をチェック
            for (int j = 0; j < colnum; j++)
            {
                hrule_linetypes[j] = tb_dataset.hrule_map[0, j];
            }
            hrule_top = hrule_str(hrule_linetypes);

            // フォーマットの作成
            LineType[] vrule_linetypes = new LineType[colnum + 1];
            Align[]    valign_types    = new Align[colnum];
            vrule_linetypes[0] = tb_dataset.vrule_map[0, 0];
            for (int j = 0; j < colnum; j++)
            {
                vrule_linetypes[j + 1] = tb_dataset.vrule_map[0, j + 1];
                valign_types[j]        = tb_dataset.align_map[0, j];
            }
            format = tabular_format(vrule_linetypes, valign_types);


            // 中身のコンテンツ行を作成
            for (int i = 0; i < rownum; i++)
            {
                for (int j = 0; j < colnum; j++)
                {
                    // セルの水平方向罫線を生成するための配列を作る。
                    hrule_linetypes[j] = tb_dataset.hrule_map[i + 1, j];

                    // フォーマット
                    CellSize cell_size = tb_dataset.cellsize_map[i, j];

                    // 先頭列の文字装飾
                    LineType lvrule_top     = tb_dataset.vrule_map[0, j];                 // left vrule
                    LineType rvrule_top     = tb_dataset.vrule_map[0, j + cell_size.col]; // right vrule +1をmulticol分増やす?
                    Align    cell_align_top = tb_dataset.align_map[0, j];

                    // 文字装飾
                    LineType lvrule     = tb_dataset.vrule_map[i, j];                 // left vrule
                    LineType rvrule     = tb_dataset.vrule_map[i, j + cell_size.col]; // right vrule +1をmulticol分増やす?
                    Align    cell_align = tb_dataset.align_map[i, j];

                    MergeType cell_mergeType = tb_dataset.merge_map[i, j];
                    // コンテンツ
                    string cell_content = tb_dataset.contents[i, j];


                    // マージセルの左上
                    if (cell_mergeType == MergeType.lefttop)
                    {
                        contents[i].Add(multicell(cell_size, cell_content, lvrule, cell_align, rvrule, lvrule_top, cell_align_top, rvrule_top));
                    }
                    // マージセルの一番上の行 -> 一番左以外はまとめられるのでスキップ
                    else if (cell_mergeType == MergeType.top)
                    {
                        continue;
                    }
                    // マージセルの一番上以外の行
                    else if (cell_mergeType == MergeType.nottop)
                    {
                        // 基本結合されるので空白の行だが、罫線はmulticolumnなどで反映する必要がある場合もある。
                        contents[i].Add(multicell(cell_size, "", lvrule, cell_align, rvrule, lvrule_top, cell_align_top, rvrule_top));
                    }
                    // 結合セルではない。
                    else
                    {
                        contents[i].Add(multicell(cell_size, cell_content, lvrule, cell_align, rvrule, lvrule_top, cell_align_top, rvrule_top));
                    }
                }

                // セルの下水平方向罫線を出力
                hrule_lines[i] = hrule_str(hrule_linetypes);
            }
        }